Posts 选择排序
Post
Cancel

选择排序

原理

  1. 将整个序列作为无序区,有序区为空。
  2. 从无序区中选出最小(大)的元素,将它与无序区中的第一个元素交换,有序区个数增加 1 个,无序区个数减少 1 个。
  3. 重复第 2 步,到第 n - 1 个元素时,排序完成。

Java 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class SelectionSort {
    public static void sort(int[] arr, BiPredicate<Integer, Integer> cmp) {
        for (int i = 0; i < arr.length - 1; i++) {
            int index = i;
            for (int j = i + 1; j < arr.length; j++) {
                // 在未排序的序列中找最小(大)值
                if (cmp.test(arr[j], arr[index])) {
                    index = j;
                }
            }
            // 与无序区第一个元素交换
            int t = arr[i];
            arr[i] = arr[index];
            arr[index] = t;
        }
    }
    
    public static void main(String[] args) {
        int[] arr = {2, 1, 5, 3, 6, 4, 9, 8, 7, 10};
        sort(arr, (a, b) -> a < b);
    }
}

算法复杂度

时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性
O(N2)O(N2)O(N2)O(1)不稳定
OLDER POST NEWER POST

Comments powered by Disqus.

内容

Search Results