用选择排序法对数组a的元素从小到大排序。例如,输入2 5 4 1 6 2 7 3 2 9 4,则应输出1 2 2 2 3 4 5 6 7 9。代码加详细解释
时间: 2023-04-03 19:04:03 浏览: 146
以下是用 C 语言编写的选择排序法对数组 a 的元素从小到大排序的代码及详细解释:
```c
#include <stdio.h>
void selection_sort(int a[], int n) {
int i, j, min_idx, temp;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (a[j] < a[min_idx]) {
min_idx = j;
}
}
temp = a[i];
a[i] = a[min_idx];
a[min_idx] = temp;
}
}
int main() {
int a[10], i;
printf("请输入数组 a 的元素:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
selection_sort(a, 10);
printf("排序后的数组 a 的元素为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
解释:
选择排序法是一种简单直观的排序算法,其基本思想是:每次从未排序的元素中选出最小的元素,放到已排序的末尾。具体实现时,需要两层循环,外层循环控制已排序的元素个数,内层循环用于查找未排序元素中的最小值,并将其与已排序的末尾交换位置。
在上述代码中,我们首先定义了一个 selection_sort 函数,用于实现选择排序。该函数接受两个参数:一个整型数组 a 和数组的长度 n。在函数内部,我们使用两层循环实现选择排序的核心逻辑。具体来说,外层循环从第一个元素开始,依次遍历到倒数第二个元素,内层循环从外层循环的下一个元素开始,依次遍历到最后一个元素,查找未排序元素中的最小值,并将其与已排序的末尾交换位置。最后,我们在主函数中调用 selection_sort 函数对输入的数组 a 进行排序,并输出排序后的结果。
注意:在实际编写代码时,我们应该尽可能地将代码分成多个函数,每个函数只负责完成一个特定的功能,以提高代码的可读性和可维护性。
阅读全文