本實例使用選擇排序對 10 個整數從小到大排序。
i=0..N-2,假設 a[i] 為最小。j=i+1..N-1 尋找真正最小值下標 min。min != i 交換 a[i] 和 a[min]。// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#define N 10
int main() {
int i, j, a[N], temp;
printf("請輸入 10 個數字:\n");
for (i = 0; i < N; i++) scanf("%d", &a[i]);
for (i = 0; i < N-1; i++) {
int min = i;
for (j = i+1; j < N; j++)
if (a[min] > a[j]) min = j;
if (min != i) {
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
printf("排序結果是:\n");
for (i = 0; i < N; i++) printf("%d ", a[i]);
printf("\n");
return 0;
}
請輸入 10 個數字:
23 2 27 98 234 1 4 90 88 34
排序結果是:
1 2 4 23 27 34 88 90 98 234
時間 O(n²),空間 O(1),不穩定排序。