记忆重拾:排序技术-排序的基本概念与性能
基本概念:
1.在排序问题中,通常将数据袁术称为记录(record)。
2.排序是将一个记录的任意序列重新排列成一个按 关键码(排序码) 有序的序列。
3.正序、逆序。若待排序序列中的记录已经按关键码排好序,称此记录序列为正序,反之若排序序列中记录的排序序列与排好序的顺序正好相反,称之为逆序。
4.趟,在排序过程中,将待排序的记录序列扫描一遍称之为一趟(pass)。
5.排序算法的稳定性,假定在待排序的记录序列中,存在多个具有相同关键码的记录,经过排序后,这些记录的相对次序保持不变,则称这种算法稳定;否则称之为不稳定。(是否稳定是由具体算法决定,不稳定的算法在某种条件下可能变成稳定的算法,而稳定的算法在某种条件下可能变为不稳定的算法)
6.排序的分类:
1.内排序与外排序:内排序是指在排序的整个过程中,所有待排序的记录都放置与内存中;外排序是指待排序的记录个数太多,需要将一部分记录放置在内存,另一部分记录放置到外村,整个排序过程需要在内外之间多次交换数据才能得到排序结果。
2.根据排序方法是否建立在关键码比较的基础,可以将排序方法分为 基于比较的排序 与 不急于比较的排序:
基于比较:主要通过关键码之间的比较和记录的移动这两种操作来实现,大致分为插入排序、交换排序、选择排序、归并排序等4类。
不基于比较:根据待排序数据的特点所采取的其他方法,通常没有大量的关键码之间的比较和记录的移动操作。
排序算法的性能:
排序是数据处理中经常执行的一种操作,往往属于系统的核心部分,因此排序算法的时间开销是衡量算法好坏的重要标志。
在基于比较的内排序,排序过程中基本由以下两种操作:1.比较(compare),关键码之间的比较 2.移动(move),记录从一个位置移动到另一个位置。所以在待排序记录个数一定的条件下,算法的执行时间主要消耗在关键码之间的比较和记录的移动上。因此,高效率的排序算法应该具有尽可能少的关键码比较次数和尽可能少的记录移动次数。
评价算法另一个标准是执行算法所需要的辅助存储空间。在待排序记录个数一定的条件下,除了存放待排序记录占用的存储空间之外,执行算法所需要的其他存储空间。
另外,算法本身的复杂程度也是一个要考虑的因素。