排序的定义
- 排序:重新排列表中的元素,使表中的元素满足按关键字递增或递减的过程。
- 输入:n个记录R1,R2,...Rn,对应的关键字有k1,k2,...kn
- 输出:输入序列的一个重排R11,R22,...Rnn,使得有k11 <= k22 <= ... knn
- 算法的稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。
- 算法是否具有稳定性并不能衡量与一个算法的优劣,他主要是对算法的性质进行描述。
排序算法的分类
根据数据元素是否完全在内存中分为
1、内部排序:排序期间元素全部存放在内存中的排序
内部排序进行的两种操作
比较:通过比较确认对应元素的前后关系
运动:通过移动元素以达到有序
(并非所有内部排序算法都要基于比较,基数排序不基于比较)
2、外部排序:在排序期间元素无法全部同时存放在内存中,必须在排序过程中根据要求不断地在内、外存之间移动的排序