c语言 简单选择排序算法思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 以长度为n=10的序列(46 74 53 14 26 38 86 65 27 34)的选择排序过程做示范: 第1趟:在10个数中选出最小值后,将最小值和第1个数组元素交换,则数组元素为(14 74 53 46 26 38 86 65 27 34); 第2趟:在剩下的9个数中选出最小值后,将最小值和第2个数组元素交换,则数组元素为(14 26 53 46 74 38 86 65 27 34); 第3趟:在剩下的8个数中选出最小值后,将最小值和第3个数组元素交换,则数组元素为(14 26 27 46 74 38 86 65 53 34); …… 第9趟:在剩下的2个数中选出最小值后,将最小值和第9个数组元素交换,则数组元素为(14 26 27 34 38 46 53 65 74 86); 共执行9趟操作,可将有n=10个元素的数组排成有序序列。 #include <stdio.h> #define N 100 int main () { /********** Begin **********/ /********** End **********/ return 0; }
时间: 2023-07-01 20:13:20 浏览: 90
以下是选择排序算法的C语言实现代码:
```c
#include <stdio.h>
#define N 100
int main () {
int a[N], n, i, j, minIndex, temp;
printf("请输入要排序的数的个数n:");
scanf("%d", &n);
printf("请输入%d个数:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < n - 1; i++) {
minIndex = i;
for (j = i + 1; j < n; j++) {
if (a[j] < a[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = a[i];
a[i] = a[minIndex];
a[minIndex] = temp;
}
}
printf("排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
该代码中,首先读入要排序的数的个数n和n个数,然后利用两个循环实现选择排序算法的具体步骤。其中,第一个循环控制排序的趟数,第二个循环用于在剩余的数中找到最小值,并将其与当前位置进行交换。最后,输出排序后的结果。
阅读全文