选择排序

思路

每次从无序区选择一个最小的放大有序区的最后

设数组为a[0…n-1]。

  1. 初始时,数组全为无序区为a[0..n-1]。令i=0

  2. 在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。

  3. i++并重复第二步直到i==n-1。排序完成。

代码

//选择排序
void SekectSort(int a[], int len) {
for (int i = 0; i < len; i++) {
int min = a[i];
int loc = i;
//寻找最小的元素
for (int j = i + 1; j < len; j++) {
if (a[j] < min) {
min = a[j];
loc = j;
}
}
//把最小的元素放在有序区后面
int temp = a[loc];
a[loc] = a[i];
a[i] = temp;
}
}

参考

MoreWindows Blog 白话经典算法系列