编写程序,要求用户录入一串整数(把这串整数存储在数组中),然后通过调用selection_ sort函数来排序这些整数。在给定n个元素的数组后,selection_ sort 函数必须做下列工作:
(a)搜索数组找出数组中最大的元素,然后把它移到数组的最后。
(b)递归地调用函数本身来对前n - 1个数组元素进行排序。
示例如下:
程序如下:
#include <stdio.h>
#define N 10
void selection_sort(int a[], int n);
void selection_sort(int a[], int n) {
int i, t, k, max = 0;
for(i = 0; i < n; i++){
if(max < a[i])
max = a[i]; //找到数组元素的最大值
}
for(i = 0; i < n; i++){
if(max == a[i]) {
t = i; break; //找到数组元素最大值的序号
}
}
k = a[n - 1]; //交换最大值与数组尾端元素的位置
a[n - 1] = max;
a[t] = k;
if (n - 1 == 0) return;
selection_sort(a, n - 1);
}
main() {
int i, a[N];
printf("Enter intergers:");
for(i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
selection_sort(a, N);
printf("Intergers arranged in order from smallest to largest:");
for(i = 0; i < N; i++) {
printf("%3d", a[i]);
}
return 0;
}