常用排序算法
排序:
分为内部排序和外部排序
-
- 内部排序:只在内存中进行
- 外部排序:内存和外存结合,数据量比较大的情况下。
排序稳定:相等的两个数值排序结束后相对位置不变
内部排序:
插入排序:第k个插入时,和前k-1个数进行比较,放在正确的位置
-
- 直接插入排序 一次直接插入
- 二分插入排序:利用二分法寻找第k个插入元素的位置
希尔排序:利用增量将待排序数组分组
选择排序:从待排序数组中选取max/min逐次放大最大位置
-
- 简单选择排序:选择排序的原始策略
堆排序:优化策略:局部再优,利用平衡二叉树,简化每次选取数据的优化
交换排序:
与选择排序的不同,发现比较就交换,每次扫描过程有不定次交换过程而选择排序只有一次
冒泡:优化临近的选择排序
快排:
优化策略:简化交换过程,将数据抽象成两部分,一部分比游标小,一部分比游标大,迭代排序
归并排序:
将两个有序队列合并成一个有序队列,依次向上合并。
和快排区别:
快排是从总体到个体
归并是从个体到总体
桶排序:
维护一个最小max-min最大长度的数组,扫描放入,得到不是默认值的数据排序数组。
基数排序:维护一个索引队列,队列的每个元素也是一个索引链表
第一层 个位排序队列
第二层 十位排序队列
第三层 百位排序队列
...
第n位,最大位排序队列
每个队列按照大小排序
总结: