排序算法

SELECTION | BUBBLE | INSERTION | QUICK | MERGE

选择排序 (Selection Sort)

每次从未排序区间选取最小元素,与未排序区间的第一个元素交换,直到全部有序。思路简单,但无论数据如何都要做 O(n²) 次比较。

最佳 O(n²) 平均 O(n²) 最坏 O(n²)
for i from 0 to n-2:
    minIdx = i
    for j from i+1 to n-1:
        if arr[j] < arr[minIdx]:
            minIdx = j
    swap arr[i] and arr[minIdx]

动画演示 · 按当前标签运行对应算法

比较 交换 已排序 基准(pivot)

复杂度对比

算法 最佳 平均 最坏 空间
选择排序O(n²)O(n²)O(n²)O(1)
冒泡排序O(n)O(n²)O(n²)O(1)
插入排序O(n)O(n²)O(n²)O(1)
快速排序O(n log n)O(n log n)O(n²)O(log n)
归并排序O(n log n)O(n log n)O(n log n)O(n)