知识大全 第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 个元素(注意一个有括号 一个没有) 在大根堆中 关键字最小的元素可能存放在堆的任一叶子结点上
相关参考