编程题:从终端输入10个数字(乱序),利用简单选择排序法对这10个数字排序,结果从小到大排列,用c语言写并详细解释下
时间: 2024-03-16 15:47:54 浏览: 113
用选择法对个数排序由小到大-初学者用的c++
好的!这是一个简单的选择排序算法的C语言实现,注释中会详细解释每一步的操作:
```c
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, min_idx;
// 选择排序的核心循环
for (i = 0; i < n-1; i++) {
// 找到未排序部分中最小的元素
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// 将最小元素交换到未排序部分的开头
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
int main() {
int arr[10];
// 从终端输入10个数字
printf("请输入10个数字:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
// 对数组进行选择排序
selectionSort(arr, 10);
// 输出排序后的结果
printf("排序后的结果:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
选择排序的基本思想是:每次从未排序部分中选择最小的元素,将其交换到未排序部分的开头。这样,已排序部分就增加了一个元素,未排序部分就减少了一个元素。重复这个过程,直到未排序部分为空,整个数组就被排序完成了。
在上面的代码中,我们首先从终端输入了10个数字,然后调用`selectionSort`函数对数组进行排序。这个函数的实现采用了上面提到的选择排序算法。在排序完成后,我们再次循环输出数组的元素,就可以得到从小到大排列的结果了。
希望这个回答能够解决你的问题!
阅读全文