排序算法图文

部分动画demo

1. 冒泡

排序算法图文

2. 选择

比较次数 N^2/2
交换次数 N
数据移动最少
排序算法图文

3. 插入(希尔排序)

最坏情况下需要~N^2/2次比较和~N^2/2次交换,最好情况下需要N-1次比较和0次交换。
平均情况下需要~N^2/4次比较和~N^2/4次交换
排序算法图文

4. 归并

典型的分治
排序算法图文

5. 快速排序

定基准,小在左,大在右
原地快排:

  • one index for partition:最坏时间为O(n^2),可以理解为每次基准都要从头到尾遍历确定位置
    排序算法图文

  • two-way partition: 最坏时间为O(nlogn),可以理解为每次基准是从两侧夹击确定位置
    排序算法图文
    比较数据
    排序算法图文

6. 桶排序

将值先按区间划分在不同的桶中,每个桶排序(插入)后合并
排序算法图文

7. 计数排序

速度快于比较排序算法
反向填充,保持稳定性
排序算法图文

8. 基数排序

从后向前,对每一位数字进行入桶、合并
排序算法图文