突破算法第五天-选择排序

突破算法第五天-选择排序:
选择排序很简单,属于交换排序算法。通过比较找到最大值或最小值,然后进行交换。

选择排序的原理

首先找到数组中最小的元素,与数组第一个元素交换,然后在剩下的元素中选择最小的,与第二个元素交换,以此类推,直到排序完成。
选择排序图

选择排序的java实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static void sort(int[] a) {
int len = a.length;
for (int i = 1; i < len; i++) {
for (int j = i; j > 0 && (a[j] < a[j - 1]); j--) {
swap(a, j, j - 1);
}
}
}
private static void swap(int[] a, int i, int j) {
int swap = a[i];
a[i] = a[j];
a[j] = swap;
}

算法复杂度

选择排序的算法复杂度是O(n^2)

改进

  1. 每次选择的时候把最大值和最小值都比较出来,双向进行交换排序
文章目录
  1. 1. 选择排序的原理
  2. 2. 选择排序的java实现
  3. 3. 算法复杂度
  4. 4. 改进
,