第八章 排序——课后习题解练【数据结构(c语言版 第2版)】
1.选择题
(1)(2)(3)(4)
答案:CDBD
(5)
C. 完全无序:这是快速排序的最佳情况。当数据完全随机时,选取的枢轴(pivot)有较大概率将序列划分为长度相近的两个子序列,此时递归树的深度为 O(logn),时间复杂度为 O(nlogn),能最好地发挥其优势。
(6)
答案:B(注意题目问的是最坏情况)
(7)
答案:C
(8)
(9)
将待排序序列构造成一个大顶堆(或小顶堆)。
此时堆顶元素是最大(或最小)值,将其与末尾元素交换。
将剩余元素重新调整成堆,再次将堆顶元素与末尾元素交换。
重复上述过程,直到整个序列有序。
每一轮都会从待排部分选择出最大(或最小)的元素,放到其最终位置。
这符合选择排序的核心思想:每次从剩余数据中选出极值,并按顺序放置。
(10)
堆只要求左右结点大于或小于根结点,不要求左节点<根结点<右结点
(11)(12)(13)
答案:BCC
(14)(15)
答案:DA
2.应用题
(1)
①直接插入排序
②折半插入排序
③希尔排序
④冒泡排序
⑤快速排序
⑥简单选择排序
⑦堆排序
⑧二路归并排序
(2)

















