选择排序是在循环开始,选择一个key,进行比较,找到一个最小值,把当前最小值的位置记录为key。最后,进行交换。
void
check_sort(int set[], int length) {
int key = 0;
for (int i = 0; i < length - 1; i++) {
key = i;
/*for (int j = i + 1; j < length; j++) {
if (set[i] > set[j])
swap(set[i], set[j]);
}*/
for (int j = i + 1; j < length; j++) {
if (set[key] > set[j])
key = j;
}
swap(set[i], set[key]);
}
}
注释部分是直接对较小值和key的值进行交换再进行下一次比较。
可以看出,选择排序的时间复杂度仍然是O(n²)。