1单选(2分)以下关于排序的叙述中正确的是( )。 A.在顺序表上实现的排序方法在链表上也同样适合 B.排序方法都是在顺序表上实现的,在链表上无法实现排序方法 C.对同一个顺序表使用不同的排序方法进行排序,得到的排序结果可能不同 D.稳定的排序方法优于不稳定的排序方法,因为稳定的排序方法效率较高 正确答案:C 解析: C、稳定的排序方法的效率不一定都比不稳定的排序方法高。有些排序方法既可以上顺序表上实现,也可以在链表上实现,但不是所有的排序方法都如此。由于排序方法具有不同的稳定性,所以对同一个顺序表(存在相同的多个关键字记录)使用不同的排序方法进行排序,得到的排序结果可能不同。
课本考据:1、排序是要整理表中的元素,使之按关键字递增或递减有序排列。
2单选(2分)?以下不属于内排序方法的是( )。 A.拓扑排序 B.二路归并排序 C.直接插入排序 D.堆排序 正确答案:A 解析: A、拓扑排序是一种产生拓扑序列的方法,不属内排序方法。 3单选(2分)?目前来讲,基于比较的内排序方法最好的平均时间复杂度为( )。 A.O(log2n) B.O(nlog2n) C.O(n) D.O(n2) 正确答案:B 解析: B、目前来讲,基于比较的内排序方法最好的平均时间复杂度为O(nlog2n)。
课本考据: 1、对于n个元素排序结果有n!种情况,对应的判定树是一颗有n!个叶子结点的高度最小的二叉树,其中单分支结点个数为0,结点总数=n0+n2=2n!-1。 2、设其高度为h,求出h=[log22n!]=[log2n!]+1,对应的关键字比较次数最多为h-1,即[log2n!],算出[log22n!]≈nlog2n,则h≈nlog2n。 3、综上所述,从平均情况可以看出大约需要nlog2n次关键字比较(所有n!种排序情况的关键字比较次数的平均值),移动次数是同样的数量级,所以排序的平均时间复杂度为O(nlog2n),即基于比较的排序算法最好的平均时间负责度为O(nlog2n)。
4单选(2分)?对有n个记录的表进行直接插入排序,在最好情况下需比较( )次关键字。 A.n-1 B.n/2 C.n+1 D.n(n-1)/2 正确答案:A 解析: A、直接插入排序在初始数据正序时效率最好,此时只需要n-1次关键字比较。
课本考据:直接插入排序的一趟操作时将当前无序区的开头元素R[i] (1<=i<=n-1)插到有序区R[0…i-1]中的适当位置,使R[0…i]变为新的有序区。
5单选(2分)?数据序列{8,9,10,4,5,6,20,1,2}只能是( )算法的两趟排序后的结果。 A.堆排序 B.简单选择排序 C.直接插入排序 D.冒泡排序 正确答案:C 解析: C、采用排除法,因为两趟排序后结果中的有序区不是全局有序的,所以只能是直接插入排序,不可能是其他三种排序方法。
课本考据: 1、选择排序的基本思想是每一趟从待排序的元素中选出关键字最小的元素,顺序放在已排好序的子表的最后,直到全部元素排序完毕。 2、堆排序是一种树形选择排序方式,利用完全二叉树中双亲结点和孩子结点之间的位置关系在无序区中选择关键字最大(或最小)的元素。堆排序每趟产生的有序区一定是全局有序区,也就是说每趟产出的有序区中的所有元素都归位了。 3、简单选择排序(又称直接选择排序)的基本思想是第i趟排序开始时,当前有序区和无序区分别为R[0…i-1]和R[i…n-1] (0<=i<=n-1),该趟排序是从当前无序区中选出关键字最小的元素R[k],将它与无序区的第1个元素R[i]交换。简单选择排序每趟产生的有序区一定是全局有序区,也就是说每趟产出的有序区中的所有元素都归位了。 4、直接插入排序的一趟操作是将当前无序区的开头元素R[i] (1<=i<=n-1)插到有序区R[0…i-1]中的适当位置,使R[0…i]变为新的有序区。直接插入排序每趟产生的有序区并不一定是全局有序区,也就是说有序区中的元素并不一定放在最终的位置上。每当一个元素在整个排序结束前就已经放在其最终位置上称为归位。 5、冒泡排序(又称气泡排序)是一种典型的交换排序方法,其基本思想是通过无序区中相邻元素关键字间的比较和位置的交换使关键字最小的元素如气泡一般选择逐渐往上“漂浮”直至“水面”。冒泡排序每趟产生的有序区一定是全局有序区,也就是说每趟产出的有序区中的所有元素都归位了。
6单选(2分)?对数据序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排序变为{4,9,-1,8,20,7,15},则采用的是( )算法。 A.希尔排序 B.快速排序 C.冒泡排序 D.简单选择排序 正确答案:A 解析: A、因为一趟排序后结果中的有序区不是全局有序的,所以不可能是简单选择排序和冒泡排序。而快速排序会将15归位,这里也不对。这里是增量d=3的希尔排序。
7单选(2分)?以下排序方法中,( )在初始序列已基本有序的情况下,排序效率最高。 A.直接插入排序 B.堆排序 C.二路归并排序 D.快速排序 正确答案:A 解析: A、直接插入排序在初始序列越接近正序时,排序效率越高,为O(n)。
课本考据:当初始化数据序列不同时,直接插入排序所耗费的时间有很大差异。最好情况是表初态为正序,此时算法的时间复杂度为O(n)。
8单选(2分)?冒泡排序最少元素移动的次数是( )。 A.n B.0 C.1 D.3n(n-1)/2 正确答案:B 解析: B、数据有序的情况。
课本考据:若初始数据序列是正序的,则一趟扫描即可完成排序,所需的关键字比较和元素移动的次数均分别达到最小值:Cmin=n-1,Mmin=0。
9单选(2分)?已知用某种排序方法对关键字序列{51,35,93,24,13,68,56,42,77}进行排序时,前两趟排序的结果为 ?(35,51,24,13,68,56,42,77,93) ?(35,24,13,51,56,42,68,77,93) ?所采用的排序方法是( )。 A.冒泡排序 B.直接插入排序 C.二路归并排序 D.快速排序 正确答案:A 解析: A、每趟冒出一个最大元素放在后面。
10单选(2分)?为实现快速排序法,待排序序列宜采用存储方式是( )。 A.链式存储 B.索引存储 C.顺序存储 D.哈希存储 正确答案:C 解析: C、快速排序算法要求存储结构具有随机存取特征,因为要快速定位子区间。
11单选(2分)快速排序在( )情况下最不利于发挥其长处。 A.排序的数据中含有多个相同值 B.排序的数据已基本有序 C.排序的数据个数为奇数 D.排序的数据量太大 正确答案:B 解析: B、当排序的数据已基本有序,快速排序的时间复杂度会变为O(n2)。
12单选(2分)?对一组数据(25,84,21,47,15,27,68,35,20)进行排序,前3趟的排序结果如下: ??第1趟:20,15,21,25,47,27,68,35,84? ?第2趟:15,20,21,25,35,27,47,68,84 ??第3趟:15,20,21,25,27,35,47,68,84? ?则所采用的排序方法是( )。 A.二路归并排序 B.希尔排序 C.简单选择 D.快速排序 正确答案:D 解析: D、考虑快速排序,第1趟将第一个元素25归位,第2趟将(20,15,21)中元素20归位,(35,27,47,68,84)中元素35归位,所以可以推导出采用的是快速排序方法。
13单选(2分)采用排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法是( )。 A.直接插入和快速 B.冒泡和快速 C.简单选择和冒泡 D.简单选择和直接插入 正确答案:D 解析: D、简单选择和直接插入肯定要进行n-1趟排序,冒泡排序为1~n-1趟,快速排序为log2n~n-1趟。
14单选(2分)?在一般情况下,以下排序算法中元素移动次数最少的( )。 A.都一样 B.简单选择排序 C.冒泡排序 D.直接插入排序 正确答案:B 解析: B、简单选择排序移动元素的次数为0~3(n-1),在一般情况下,比直接插入排序和冒泡排序移动元素次数要少。
15单选(2分)?以下序列不是堆的是( )。 A.(10,20,40,60,66,77,80,82,85,98,100) B.(100,85,98,77,80,60,82,40,20,10,66) C.(100,98,85,82,80,77,66,60,40,20,10) D.(100,85,40,77,80,60,66,98,82,10,20) 正确答案:D 解析: D、画出各个序列对应的完全二叉树,再逐个判断。
16单选(2分)?对含有n个元素的数据序列采用堆排序方法,其中调用筛选算法有( )次。 A.n-1 B.n C.(3n-2)/2 D.n/2 正确答案:C 解析: C、建立初始堆调用筛选算法n/2时,每选出一个元素调用筛选算法1次,共需n/2+n-1=(3n-2)/2次。
17单选(2分)?已知序列(18,12,16,10,5,15,2,8,7)是大根堆,删除一个元素后再调整为大根堆,调整后的大根堆是( )。 A.(16,2,15,10,5,7,12,8) B.(16,15,12,10,8,7,5,2) C.(16,12,15,10,5,7,2,8) D.(16,12,15,10,5,7,2,8,18) 正确答案:C 解析: C、堆中只能删除堆顶元素,然后调整成堆。
18单选(2分)?对n个元素采用二路归并排序,其中归并的趟数是( )。 A.[log2n]+1 B.[log2n] C.O(n2) D.n 正确答案:B 解析: B、归并排序中每趟归并子段的长度倍增,所以趟数为log2n(取上界)。
课本考据:对于长度为n的排序表,二路归并需要进行[log2n]趟,每趟归并时间为O(n)。
19单选(2分)?数据序列(10,9,8,7,6,5,4,3,2,1)采用二路归并排序方法进行递增排序,第2趟排序结束后的结果是( )。? A.(9,10,7,8,5,6,3,4,1,2) B.(7,8,9,10,3,4,5,6,1,2) C.(1,2,3,4,7,8,9,10,1,2) D.(1,2,3,4,5,6,7,8,9,10) 正确答案:B
20单选(2分)?有n个十进制整数进行基数排序,其中最大的整数为5位,则基数排序过程中临时建立的队数个数是( )。 A.5 B.10 C.n D.2 正确答案:B 解析: B、基数排序中建立队列个数等于进制数。
|