选择排序的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
其C/C++语言实现的示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include <iostream>
using namespace std;
const int TESTS_LENGTH = 10;
void selection_sort(int a[], int length) {
for (int i = 0; i < length - 1; i++) { int min_idx = i; for (int j = i + 1; j < length; j++) { if (a[j] < a[min_idx]) { min_idx = j; } } if (min_idx != i) { int temp = a[i]; a[i] = a[min_idx]; a[min_idx] = temp; } } }
int main() {
int a[TESTS_LENGTH] = {100, 120, 110, 9, 2, 8, 1090, 20, 31, 57};
selection_sort(a, TESTS_LENGTH);
printf("\n"); for(int i = 0; i < TESTS_LENGTH; i++) { printf("%d ", a[i]); } printf("\n");
}
|
选择排序是不稳定的排序方法。