📅  最后修改于: 2023-12-03 15:28:21.823000             🧑  作者: Mango
选择排序(Selection Sort)是一种简单直观的排序算法,其基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。
void selection_sort(int arr[], int len) {
int minIndex, temp;
for (int i = 0; i < len - 1; i++) {
minIndex = i;
for (int j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
选择排序是不稳定的。例如,序列{ 4,5,4,6,3},第一次选择第1个元素4与第5个元素3交换,那么第一个4就和第二个4的相对前后顺序发生了改变。
选择排序在实现上比较容易,时间复杂度为O(n^2),不适合数据规模较大的情况,但是空间复杂度为O(1),是一种原地排序算法。此外,选择排序是不稳定的,但是由于其算法简单,对于小规模数据排序还是可以使用的。