概述
排序:将含有n个记录的序列按照关键字k递增或递减的顺序排列的操作。
在排序的诸多标准中,稳定性非常重要。如果ki=kj,并且i领先于j。在排序之后,i仍然领先于j,则该方法稳定,否则不稳定。
内排序:在排序整个过程中,待排序的所有记录全部被放置在内存中。
外排序:由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。
从算法的简单性来看,我们将7种算法分为两类:
简单算法:冒泡、简单选择、直接插入。
改进算法:希尔、堆、归并、快速。
直接插入排序:依次将未排序的记录插入左边有序的记录序列。一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。
平均O(n2) 最好O(n) 最坏O(n2)
折半插入排序:
平均O(n2) 最好O(n) 最坏O(n2)
希尔排序:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到