
1选择排序
发布时间:
基本思想
每趟从待排序中的数据元素中选出最小(或最大)一个元素,顺序放到待排序的数列最前,直到全部待排序的数据元素排完。
示例
初 始 关 键 字 [49 38 65 97 76 13 27 49]
第一趟排序后 13[38 65 97 76 49 27 49]
第二趟排序后 13 27[65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
例2.1 输入n个数,将n个数按从小到大的顺序输出(n<=10000)。
js
#include <iostream>
using namespace std;
const int MAXN = 10001;
int main() {
int n, k, i, j;
float temp, a[MAXN];
cin >> n;
for (i = 0; i < n; i++)
cin >> a[i]; // 输入n个数
for (i = 0; i < n; i++) { // i控制当前序列中最小值存放的数据位置
k = i;
for (j = i + 1; j < n; j++) // 在当前无序区a[i..n]中选最小的元素a[k]
if (a[j] < a[k])
k = j;
if (k != i) { // 交换a[i]和a[k],将当前最小值放到a[i]位置
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
for (i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}