C语言练习题-C语言练习题实例37
题目:对10个数进行排序。
程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。
实例
#include <stdio.h>
#define N 10
int main() {
int i, j, a[N], temp;
printf("请输入 10 个数字:\n");
for (i = 0; i < N; i++)
scanf("%d", &a[i]);
for (i = 0; i < N - 1; i++) {
int min = i;
for (j = i + 1; j < N; j++)
if (a[min] > a[j])
min = j;
if (min != i) {
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
printf("排序结果是:\n");
for (i = 0; i < N; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
以上实例输出结果为:
请输入 10 个数字:
23 2 27 98 234 1 4 90 88 34
排序结果是:
1 2 4 23 27 34 88 90 98 234
该程序使用选择排序算法对输入的10个数字进行排序。选择排序的思想是每次从剩余未排序的元素中选择一个最小的元素,并将其与当前位置的元素交换。程序中使用两层循环,外层循环控制选择的起始位置,内层循环从起始位置后面的元素中寻找最小元素的索引,如果找到最小元素则进行交换。最终输出排序结果。