知识大全 排序 - 分配排序 - 基数排序
Posted 基数
篇首语:从来好事天生俭,自古瓜儿苦后甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 排序 - 分配排序 - 基数排序相关的知识,希望对你有一定的参考价值。
基数排序
基数排序(Radix Sort)是对箱排序的改进和推广
单关键字和多关键字
文件中任一记录R[i]的关键字均由d个分量
>构成
若这d个分量中每个分量都是一个独立的关键字 则文件是多关键字的(如扑克牌有两个关键字 点数和花色);否则文件是单关键字
的
>( ≤j
多关键字中的每个关键字的取值范围一般不同。如扑克牌的花色取值只有4种,而点数则有13种。单关键字中的每位一般取值范围相
同。
2、基数
设单关键字的每个分量的取值范围均是:
C 0 ≤k j ≤C rd-1 (0≤j
可能的取值个数rd称为基数。
基数的选择和关键字的分解因关键宇的类型而异:
(1) 若关键字是十进制整数,则按个、十等位进行分解,基数rd=10,C 0 =0,C 9 =9,d为最长整数的位数;
(2) 若关键字是小写的英文字符串,则rd=26,C o =\'a\',C 25 =\'z\',d为字符串的最大长度。
3、基数排序的基本思想
基数排序的基本思想是:从低位到高位依次对K j (j=d-1,d-2,…,0)进行箱排序。在d趟箱排序中,所需的箱子数就是基数
rd,这就是"基数排序"名称的由来。
4、基数排序的排序过程
要排序的记录关键字取值范围是0到99之间的整数(36,5,16,98,95,47, 32,36,48)。对这些关键字进行基数排序的过程。
5、基数排序的类型说明和算法描述
要保证基数排序是正确的,就必须保证除第一趟外各趟箱排序是稳定的。相应的类型说明及算法描述【参见教材】。
6、算法分析
若排序文件不是以数组R形式给出,而是以单链表形式给出(此时称为链式的基数排序),则可通过修改出队和人队函数使表示箱子
的链队列无须分配结点空间,而使用原链表的结点空间。人队出队操作亦无需移动记录而仅需修改指针。虽然这样一来节省了一定的
时间和空间,但算法要复杂得多,且时空复杂度就其数量级而言并未得到改观。 有关链式的基数排序可【阅读参考书目[12]】。
基数排序的时间是线性的(即O(n))。
基数排序所需的辅助存储空间为O(n+rd)。
基数排序是稳定的。
cha138/Article/program/sjjg/201311/23764相关参考
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 基数排序也可以在顺序存储结构中实现此时的分配即为统计该位关键字值分别为…的记
类似于表插入排序附设指针数组将顺序表视作一个静态链表利用修改指针实现分配和收集同时设置rd个队列的头指针和尾指针分别指示各队列的头结点和尾结点在链表中的位置 首先初始化空队列即将每个队列的头指针
按平均时间将排序分为四类 ()平方阶(O(n))排序 一般称为简单排序例如直接插入直接选择和冒泡排序; ()线性对数阶(O(nlgn))排序 如快速堆和归并排序; ()O(n+£)阶排序
分配排序排序过程无须比较关键字而是通过分配和收集过程来实现排序时间复杂度可达到线性阶O(n) 箱排序 箱排序(BinSort)也称桶排序(BucketSort)设置若干个箱子依次扫描待
)在基于比较的排序方法中每次比较两个关键字的大小之后仅仅出现两种可能的转移因此可以用一棵二叉树来描述比较判定过 程 当文件的n个关键字随机分布时任何借助于比较的排序算法至少需要O(nlgn)的
以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态 ()直接插入排序()希尔排序()冒泡排序()快速排序 ()直接选择排序()堆排序()归并排序()基数排序 上述方
以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态 ()直接插入排序()希尔排序()冒泡排序()快速排序 ()直接选择排序()堆排序()归并排序()基数排序 上述方
以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态 ()直接插入排序()希尔排序()冒泡排序()快速排序 ()直接选择排序()堆排序()归并排序()基数排序 上述方法中哪些
希赛教育计算机专业考研专业课辅导招生 希赛教育计算机专业考研专业课辅导视频 希赛教育计算机考研专业课在线测试系统 一般情况下假设记录的逻辑关键字由d个关键字构成每个关键字可能取rd个值则只要
以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态 ()直接插入排序()希尔排序()冒泡排序()快速排序 ()直接选择排序()堆排序()归并排序()基数排序 上述方法中哪些