Skip to main content

选择排序

info

选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素, 存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 以此类推,直到全部待排序的数据元素的个数为零。

代码实现

  • Java
class SelectionSort {
public void sort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int min = i;
// 遍历找出未排序中的元素中最小值下标
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
// 若最小值下标与未排序中最左侧下标不一致则交换
if (min != i) {
int tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
}
}

复杂度

  1. 平均时间复杂度 О(n²)
  2. 最坏时间复杂度 О(n²)
  3. 最优时间复杂度 О(n²)
  4. 空间复杂度 总共О(n),需要辅助空间O(1)