应用题
对于n个元素组成的线性表进行快速排序时,所需进行的比较次数与这n个元素的初始排序有关。问:
问答题
7.当n=7时,在最好情况下需进行多少次比较?请说明理由。
【正确答案】在最好情况下,假设每次划分能得到两个长度相等的子文件,文件的长度n=2k一1,那么第一遍划分得到两个长度均为[n/2]的子文件,第二遍划分得到4个长度均为[n/4]的子文件,以此类推,总共进行k=log2(n+1)遍划分,各子文件的长度均为1,排序完毕。当n=7时,k=3,在最好情况下,第一遍需比较6次,第二遍分别对两个子文件(长度均为3,k=2)进行排序,备需2次,共10次即可。
【答案解析】
问答题
8.当n=7时,给出一个最好情况的初始排序的实例。
【正确答案】在最好情况下快速排序的原始序列实例:4,1,3,2,6,5,7。
【答案解析】
问答题
9.当n=7时,在最坏情况下需进行多少次比较?请说明理由。
【正确答案】在最坏情况下,若每次用来划分的记录的关键字具有最大值(或最小值),那么只能得到左(或右) 子文件,其长度比原长度少l。因此,若原文件中的记录按关键字递减次序排列,而要求排序后按递增次序排列时,快速排序的效率与冒泡排序相同,其时间复杂度为O(n2)。所以当n=7时,最坏情况下的比较次数为21次。
【答案解析】
问答题
10.当n=7时,给出一个最坏情况的初始排序的实例。
【正确答案】在最坏情况下快速排序的初始序列实例:7,6,5,4 ,3,2,l,要求按递增排序。
提示:此题考查的知识点是快速排序的思想。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
【答案解析】