1、排序的定义:假设含有n个记录的序列为{r1,r2,......,rn},其相应的关键字分别为{k1,k2,......,kn},需确定1,2,......,n的一种排列p1,p2,......,pn,使其相应的关键字满足kp1<=kp2<=......<=kpn(非递增或非递减)关系,即使得序列成为一个按关键字有序的序列{rp1,rp2,......,rpn},这样的操作称为排序。
2、排序的稳定性:假设关键字ki=kj(i!=j),且在排序前的序列中ri领先于rj,如果排序后ri仍然领先于rj,则称所用的排序方法是稳定的;反之,若可能使得排序后的序列中rj领先ri,则称所用的方法是不稳定的。简单的说,小明和小芳的总分相等,排序前小明排在小芳前面,则排序后小明也在小芳前面,则称排序算法是稳定的,否则算法是不稳定当。
3、内排序和外排序:内排序是在整个排序过程中,待排序的所有记录全部放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外寸之间多次交换数据才能进行。
内排序主要受3个方面的影响。
(1)时间性能。在内排序中,主要进行两种操作:比较和移动。总之在排序过程中要尽可能的减少比较的次数,尽可能的减少移动的次数。
(2)辅助空间。存放待排序的数据所需的空间以及执行算法时所需要的其他存储空间。
(3)算法的复杂性。这里指算法本身的复杂度,而不是算法的时间复杂度。显然算法过于复杂也会影响排序的性能。
4、排序算法的分类
(1)交换排序:冒泡排序,快速排序。
(2)插入排序:直接插入排序,折半插入排序,希尔排序。
(3)选择排序:简单选择排序,堆排序。
(4)归并排序:归并排序。