自定义一个有10个元素int类型的一维数组:然后利用选择法进行从小到大排序以及从大到小排序。
要求:
1) int类型10元素一维数组,允许事先自定义初始化
2) 请使用自定义函数实现从小到大排序
3) 请使用自定义函数实现从大到小排序
4) 请使用自定义函数实现排序后的数组输出
代码如下:
#include<stdio.h>
#include<stdlib.h>
#define N 10
void select_sort_min(int a[], int n);
void select_sort_max(int a[], int n);
void display(int a[], int n);
void display(int a[], const int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
//选择排序实现-----从小到大
void select_sort_min(int a[], int n)//n为数组a的元素个数
{
//进行N-1轮选择
for (int i = 0; i < n - 1; i++)
{
int min_index = i;
//找出第i小的数所在的位置
for (int j = i + 1; j < n; j++)
{
if (a[j] < a[min_index])
{
min_index = j;
}
}
//将第i小的数,放在第i个位置;如果刚好,就不用交换
if (i != min_index)
{
int temp = a[i];
a[i] = a[min_index];
a[min_index] = temp;
}
}
}
//选择排序实现-----从大到小
void select_sort_max(int a[], int n)//n为数组a的元素个数
{
//进行N-1轮选择
for (int i = 0; i < n - 1; i++)
{
int max_index = i;
//找出第i大的数所在的位置
for (int j = i + 1; j < n; j++)
{
if (a[j] > a[max_index])
{
max_index = j;
}
}
//将第i大的数,放在第i个位置;如果刚好,就不用交换
if (i != max_index)
{
int temp = a[i];
a[i] = a[max_index];
a[max_index] = temp;
}
}
}
int main()
{
int num[N] = { 9,17,99,7,4,8,12,0,11,6 };
printf("排序前: \n");
display(num, N);
select_sort_min(num, N);
printf("从小到大排序:\n");
display(num, N);
select_sort_max(num, N);
printf("从大到小排序: \n");
display(num, N);
return 0;
}
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!
int a[]={1,2,3,4,5,6,7,8,9,10};