(五)、基数排序

前面所讨论的排序算法均是基于关键字之间的比较来实现的,而基数排序(radix sort)是通过“分配”和“收集”过程来实现排序,不需要进行关键字间的比较,是一种借助于多关键字排序的思想对单关键字排序的方法。

基数排序有两种,即最低位优先(least sig gnificant digit first,LSD)和最高位优先(most significant digit first,MSD),其原理是相同的,主要讨论前者。

有几位就分类几趟,辅助空间为创建队列r,即O(n)(是一种稳定的排序方法,O(d(n+r)) )

数据结构(知识点碎片四十)_外排序

数据结构(知识点碎片四十)_基数排序_02

数据结构(知识点碎片四十)_外排序_03

(六)、稳定性判断

数据结构(知识点碎片四十)_快速排序_04

数据结构(知识点碎片四十)_快速排序_05

注意:“快”指快速排序,“些”指希尔排序,“选’指简单选择排序,“堆”指堆排序,这4种是不稳定的,其他自然都是稳定的。

数据结构(知识点碎片四十)_外排序_06

注意:冒泡排序、选择排序第一趟排序后肯定有一个最值元素来到序列的一端。

选择排序、快速排序、堆排序每次排序能确定一个关键字的最终位置

(七)、外排序

  • 磁盘排序

对存放在磁盘中的文件进行排序属于典型的外排序,称为磁盘排序(disk sort)。由于磁盘是直接存取设备,读写一个数据块的时间与当前读写头所处的位置关系不大,所以可以通过读写数据块的次数来衡量存取时间。通过相关算法将待排序文件中的记录一部分一部分地调入内存处理,产生若干个文件,它们都是有序的,称为顺串(runs)。然后再次将这若干文件中的记录调入内存,通过相关归并算法产生一个有序文件。