Skip to content
本页目录

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;
}