第八章 排序
- 1、排序:排序就是重新排列表中的元素,使表中的元素满足关键字有序的过程。
- 排序算法的稳定性:若待排序表中有两个元素Ri和Rj,其对应的关键字相同则keyi=keyj,且排序前Ri排在Rj前面,若在使用某一排序算法后Ri仍然排在Rj前面,则称这个排序算法稳定。
- 内部排序:是指在排序期间元素全部在内存中进行排序。
- 外部排序:是指在排序的过程中,元素无法全部同时存储在内存中,必须在排序的过程中根据要求不断的在内、外存之间进行移动排序。
- 插入排序:其基本思想:对于每一个待排序的记录,按照其关键字大小插入前面已排序好的子序列中。在插入排序中,又可分为直接插入排序、折半插入排序、希尔排序。
- 直接插入排序:每一次将待排序的记录按照关键字的大小插入到前面已排序好的子序列中,直到所有的记录插入完成为止。
- 折半插入排序:折半插入排序是插入排序的一种优化,由于插入排序前面的已经是排序好的序列,而依次比较元素插入位置相对费时,采用折半查找来加快插入速度。
- 希尔排序:又称为缩小增量排序,即把相隔某个“增量”的记录组成一个子表,对于各个子表分别进行直接插入排序,当整个表中的元素已经呈现“基本有序”时,再对全体记录进行一次直接插入排序。
- 2、交换排序
- 交换定义:是指根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。基于交换的排序算法有很多,如,冒泡排