知识大全 第8章排序(基础知识)习题练习答案

Posted

篇首语:与天地兮比寿,与日月兮齐光。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 第8章排序(基础知识)习题练习答案相关的知识,希望对你有一定的参考价值。

以关键字序列( )为例 分别写出执行以下排序算法的各趟排序结束时 关键字序列的状态  ( ) 直接插入排序 ( )希尔排序 ( )冒泡排序 ( )快速排序 ( ) 直接选择排序 ( ) 堆排序 ( ) 归并排序 ( )基数排序  上述方法中 哪些是稳定的排序?哪些是非稳定的排序?对不稳定的排序试举出一个不稳定的实例  ( )直接插入排序:(方括号表示无序区)  初始态: [ ]  第一趟 [ ]  第二趟 [ ]  第三趟 [ ]  第四趟 [ ]  第五趟 [ ]  第六趟 [ ]  第七趟 [ ]  第八趟 [ ]  第九趟   ( )希尔排序(增量为 )  初始态:   第一趟    第二趟    第三趟  

 ( )冒泡排序(方括号为无序区)  初始态 [ ]  第一趟 [ ]  第二趟 [ ]  第三趟 [ ]  第四趟 [ ]  第五趟 [ ]  第六趟

 ( )快速排序 (方括号表示无序区 层表示对应的递归树的层数)    初始态 [ ]  第二层 [ ] [ ]  第三层 [ ] [ ] [ ]  第四层 [ ] [ ] [ ]  第五层 [ ]   第六层  ( )直接选择排序 (方括号为无序区)  初始态  [ ]  第一趟 [ ]  第二趟 [ ]  第三趟 [ ]  第四趟 [ ]  第五趟 [ ]  第六趟 [ ]  第七趟 [ ]  第八趟 [ ]  第九趟

 ( )堆排序 (通过画二叉树可以一步步得出排序结果)      初始态    [ ]    建立初始堆 [ ] 第一次排序重建堆 [ ]  第二次排序重建堆 [ ]  第三次排序重建堆 [ ]  第四次排序重建堆 [ ]  第五次排序重建堆 [ ]  第六次排序重建堆 [ ]  第七次排序重建堆 [ ]  第八次排序重建堆 [ ]  第九次排序重建堆

 ( )归并排序(为了表示方便 采用自底向上的归并 方括号为有序区)   初始态 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]  第一趟 [ ] [ ] [ ] [ ] [ ]  第二趟 [ ] [ ] [ ]  第三趟 [ ] [ ]  第四趟 [ ] ( )基数排序(方括号内表示一个箱子共有 个箱子 箱号从 到 )    初始态     第一趟 [] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]  第二趟 [ ] [] [ ] [ ] [ ] [ ] [ ] [ ] [] [ ]  第三趟 [ ] [ ] [ ] [ ] [ ] [] [ ] [ ] [ ] [ ]   在上面的排序方法中 直接插入排序 冒泡排序 归并排序和基数排序是稳定的 其他排序算法均是不稳定的 现举实例如下 以带*号的表示区别   希尔排序 [ * ]  快速排序 [ * ]  直接选择排序 [ * ]  堆排序 [ * ]

上题的排序方法中 哪些易于在链表(包括各种单 双 循环链表)上实现? 答   上题的排序方法中 直接插入排序 冒泡排序 直接选择排序 基数排序和归并排序等方法易于在链表上实现

当R[low high]中的关键字均相同时 Partion返回值是什么?此时快速排序的的运行时间是多少?能否修改Partion 使得划分结果是平衡的(即划分后左右区间的长度大致相等)? 答   此时Partion 返回值是low 此时快速排序的运行时间是 (high low)(high low )/ =O((high low)^ ) 可以修改Partion 将其中RecType pivot=R[i];句改为 RecType pivot=R[(j+i)/ ] 也就是取中间的关键字为基准 这样就能使划分的结果是平衡的

若文件初态是反序的 则直接插入 直接选择和冒泡排序哪一个更好? 答   应选直接选择排序为更好 分析如下  ( )在直接插入排序算法中 反序输入时是最坏情况 此时    关键字的比较次数 Cmax=(n+ )(n )/ ;     记录移动次数为 Mmax=(n )(n+ )/ ;        Tmax=n^ n (以上二者相加)  ( )在冒泡排序算法中 反序也是最坏情况 此时      Cmax=n(n )/ ; Mmax= n(n )/      Tmax= n^ n   ( )在选择排序算法中      Cmax=n(n )/ Mmax= (n )     Tmax=n^ / n/      由此可见 虽然它们的时间复杂度都是O(n^ ) 但是选择排序的常数因子为 / 因此选择排序最省时间

若文件初态是反序的 且要求输入稳定 则在直接插入 直接选择 冒泡和快速排序中就选选哪种方法为宜? 答     这四种排序算法中 直接选择 快速排序均是不稳定的 因此先予以排除 剩下两种算法中 由于直接插入算法所费时间比冒泡法更少(见上题分析) 因此选择直接排序算法为宜

有序数组是堆吗?答     有序数组是堆 因为有序数组中的关键字序列满足堆的性质 若数组为降序 则此堆为大根堆 反之为小根堆

高度为h的堆中 最多有多少个元素?最少有多少个元素?在大根堆中 关键字最小的元素可能存放在堆的哪些地方?  答   高度为h的堆实际上为一棵高度为h的完全二叉树 因此根据二叉树的性质可以算出 它最少应有 h 个元素 最多可有 h 个元素(注意一个有括号 一个没有) 在大根堆中 关键字最小的元素可能存放在堆的任一叶子结点上

相关参考