排序算法图文
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. 基数排序
从后向前,对每一位数字进行入桶、合并