1.排序的基本概念
2.插入排序
算法的思想: 每次将一个待排序的记录按其关键字大小插入到前面已经排好的子序列中,直至全部记录插入完成。
关键:
找到记录插入的位置。
#jiajia# ① 直接插入法
- 带哨兵直接插入法
- 算法效率分析
②折半插入排序
找到记录待插入的位置,可以
顺序查找法
,也可使用折半查找法
。优化比较次数
可以用链式存储,减少移动次数。
- 例1
- 例2
代码:
③希尔排序(Shell Sort)
- 性能分析
3.交换排序
基于“交换”的排序:根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置
①冒泡排序
- 基于:顺序表的冒泡排序
在顺序
表头
或表尾
都可以实现
- 基于 链表的冒泡排序
在链表的
表头
实现
②快速排序
4.选择排序
选择排序:每一趟在待排序得元素中选取关键值最小得(或最大)的元素加入有序子序列中
①简单选择排序
-思想
- 代码
- 性能
②堆排序
- 堆的定义
- 建立堆
- 建立大根堆代码
- 基于大根堆进行排序
- 算法效率分析
- 堆的删除与插入
以小根堆为例子的插入与删除;
试着写出以大根堆为例子的插入与删除
5.归并排序和基数排序
①归并排序
- 二路归并代码
- 归并排序代码
②基数排序
6.内部排序算法的比较与应用
①内部排序算法的比较
②内部排序算法的应用
7.外部排序
①外部排序算法的概念与方法
②多路平衡归并与败者树
③置换-选择排序
土方法: 通过增加输入缓冲区的容量来,减少初始归并段数量的能力有限,需要更的空间。
置换选择排序:可以用有限的空间,来减少初始归并段的数量
④最佳归并树