知识大全 排序 - 分配排序 - 箱排序 (二)
Posted 基数
篇首语:少年击剑更吹箫,剑气箫心一例消。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 排序 - 分配排序 - 箱排序 (二)相关的知识,希望对你有一定的参考价值。
)在基于比较的排序方法中 每次比较两个关键字的大小之后 仅仅出现两种可能的转移 因此可以用一棵二叉树来描述比较判定过
程
当文件的n个关键字随机分布时 任何借助于 比较 的排序算法 至少需要O(nlgn)的时间
箱排序和基数排序只需一步就会引起m种可能的转移 即把一个记录装入m个箱子之一 因此在一般情况下 箱排序和基数排序可
能在O(n)时间内完成对n个记录的排序 但是 箱排序和基数排序只适用于像字符串和整数这类有明显结构特征的关键字 而当关键
字的取值范围属于某个无穷集合(例如实数型关键字)时 无法使用箱排序和基数排序 这时只有借助于 比较 的方法来排序
若n很大 记录的关键字位数较少且可以分解时 采用基数排序较好 虽然桶排序对关键字的结构无要求 但它也只有在关键字是
随机分布时才能使平均时间达到线性阶 否则为平方阶 同时要注意 箱 桶 基数这三种分配排序均假定了关键字若为数字时 则
其值均是非负的 否则将其映射到箱(桶)号时 又要增加相应的时间
( )有的语言(如Fortran Cobol或Basic等)没有提供指针及递归 导致实现归并 快速(它们用递归实现较简单)和基数(使用了指
针)等排序算法变得复杂 此时可考虑用其它排序
( )本章给出的排序算法 输人数据均是存储在一个向量中 当记录的规模较大时 为避免耗费大量的时间去移动记录 可以用链表
作为存储结构 譬如插入排序 归并排序 基数排序都易于在链表上实现 使之减少记录的移动次数 但有的排序方法 如快速排序
和堆排序 在链表上却难于实现 在这种情况下 可以提取关键字建立索引表 然后对索引表进行排序 然而更为简单的方法是 引
人一个整型向量t作为辅助表 排序前令t[i]=i( ≤i
结束后,向量t就指示了记录之间的顺序关系:
R[t[0]].key≤R[t[1]].key≤…≤R[t[n-1]].key
若要求最终结果是:
R[0].key≤R[1].key≤…≤R[n-1].key
则可以在排序结束后,再按辅助表所规定的次序重排各记录,完成这种重排的时间是O(n)。wInGWit.CoM
cha138/Article/program/sjjg/201311/23767相关参考
按平均时间将排序分为四类 ()平方阶(O(n))排序 一般称为简单排序例如直接插入直接选择和冒泡排序; ()线性对数阶(O(nlgn))排序 如快速堆和归并排序; ()O(n+£)阶排序
基数排序 基数排序(RadixSort)是对箱排序的改进和推广 单关键字和多关键字 文件中任一记录R[i]的关键字均由d个分量 >构成 若这d个分量中每个分量都是一个独立的关键字则文件是
归并排序 ·先两个一组排序形成(n+)/组再将两组并一组直到剩下一组为止 ·归并排序是非就地稳定排序时间复杂度是O(nlogn) 分配排序 箱排序 ·按关键字的取值范围确定箱子数按关键字
排序是组织数据最基本的运算排序的方法也很多本章给出了几种典型的排序方法见下表 排序类别插入排序交换排序选择排序归并排序分配排序 排序方法直接插入冒泡法直接选择*归并排序箱排序 希尔排序*快速
基数排序 基数排序(RadixSort)根据组成关键字的每个位的有效值用分配和收集的方法进行排序 基数排序算法cha138/Article/program/sjjg/201311
(七)基数排序 思想从低位到高位依次对Kj(j=dd…)进行箱排序箱排序也称桶排序(BucketSort)其基本思想是设置若干个箱子依次扫描待排序的记录R[]
.归并排序辅助存储为O()( )【青岛大学四(分)】 .在分配排序时最高位优先分配法比最低位优先分配法简单( )【上海交通大学一】 .冒泡排序和快速
堆排序 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征使得在当前无序区中选取最大(或最小)关键字的记录变得 简单 ()用大根堆排序的基本思想 ①先将初始文件R[n]建
算法分析 ()算法的最好时间复杂度 若文件的初始状态是正序的一趟扫描即可完成排序所需的关键字比较次数C和记录移动次数M均达到最小值 Cmin=n Mmin= 冒泡排序最好的时间复杂度为O
划分算法Partition ()简单的划分方法 ①具体做法 第一步(初始化)设置两个指针i和j它们的初值分别为区间的下界和上界即i=lowi=high;选取无序区的第一个记录 R[i](即