- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
信奥赛CSP-J初赛模拟题(排序算法)复习测试题
一、单项选择题(每题5分,共100分)
1.以下哪种排序算法在最坏情况下的时间复杂度为$O(n^2)$?()[单选题]*
A.快速排序(正确答案)
B.归并排序
C.堆排序
D.基数排序
答案解析:
快速排序在最坏情况下(例如数组已经有序且每次划分都极不平衡)时间复杂度为$O(n^2)$;归并排序最坏情况时间复杂度为$O(nlogn)$;堆排序最坏情况时间复杂度为$O(nlogn)$;基数排序最坏情况时间复杂度为$O(d(n+r))$(d为位数,r为基数),通常不是$O(n^2)$。
2.对于一个基本有序的数组,下面哪种排序算法效率最高?()[单选题]*
A.冒泡排序
B.快速排序
C.插入排序(正确答案)
D.选择排序
答案解析:
插入排序在基本有序的数组上,每次插入操作平均移动元素较少,时间复杂度接近$O(n)$;冒泡排序仍然需要较多比较和交换;快速排序在基本有序时可能达到最坏情况;选择排序比较次数固定为$O(n^2)$。
3.下面关于堆排序的说法,错误的是()[单选题]*
A.堆排序是一种不稳定的排序算法
B.堆排序建堆的时间复杂度为$O(n)$(正确答案)
C.堆排序每次调整堆的时间复杂度为$O(logn)$
D.堆排序是一种原地排序算法
答案解析:
堆排序建堆的时间复杂度为$O(n)$是错误的,建堆的时间复杂度为$O(nlogn)$。堆排序是不稳定的,每次调整堆时间复杂度为$O(logn)$,并且是原地排序。
4.若要对一个有n个元素的数组进行排序,在平均情况下,时间复杂度最低的排序算法是()[单选题]*
A.冒泡排序
B.快速排序(正确答案)
C.插入排序
D.选择排序
答案解析:
快速排序在平均情况下时间复杂度为$O(nlogn)$,冒泡排序、插入排序、选择排序平均情况时间复杂度为$O(n^2)$。
5.在归并排序中,将两个有序子数组合并成一个有序数组的操作称为()[单选题]*
A.分解
B.治理
C.合并(正确答案)
D.排序
答案解析:
归并排序中把分解后的子问题解决后再把结果合并起来的操作就是合并。
6.以下排序算法中,不属于基于比较的排序算法的是()[单选题]*
A.冒泡排序
B.计数排序(正确答案)
C.快速排序
D.堆排序
答案解析:
冒泡排序、快速排序、堆排序都是基于比较元素大小来进行排序的;计数排序是基于元素的范围进行计数的非基于比较的排序算法。
7.对于一个包含10个元素的数组,使用冒泡排序,在最好情况下(数组已经有序),需要进行多少次比较?()[单选题]*
A.0
B.9(正确答案)
C.45
D.90
答案解析:
冒泡排序在最好情况下,只需要进行$n-1$次比较(n为数组元素个数),这里$n=10$,所以是9次。
8.快速排序的基本思想是()[单选题]*
A.不断将数组分成两部分,左边部分小于某个基准值,右边部分大于某个基准值,然后递归对左右部分排序(正确答案)
B.不断选择最小(大)的元素放到合适位置
C.把数组构建成堆然后不断调整堆顶元素到合适位置
D.通过不断交换相邻元素将最大(小)元素移到最后(前)
答案解析:
这是快速排序的基本思想。
9.插入排序在插入第i个元素时,需要比较的次数最多为()[单选题]*
A.i-1
B.i(正确答案)
C.n-i
D.n
答案解析:
插入第i个元素时,最坏情况需要和前面i-1个元素都比较,总共比较i次。
10.选择排序每次选择的元素是()[单选题]*
A.未排序部分的最小元素(正确答案)
B.未排序部分的最大元素
C.已排序部分的最小元素
D.已排序部分的最大元素
答案解析:
选择排序每次从无序区选择最小元素放到已排序区末尾。
11.堆是一种()数据结构。[单选题]*
A.线性
B.树形(正确答案)
C.图形
D.链式
答案解析:
堆是一种特殊的完全二叉树结构,属于树形数据结构。
12.在归并排序中,递归深度最多为()[单选题]*
A.$logn$(正确答案)
B.n
C.$n^2$
D.$2^n$
答案解析:
归并排序每次把数组分成两半,递归深度最多为$logn$。
13.对于一个近乎有序的数组,使用()排序算法效率较高。[单选题]*
A.快速排序
B.归并排序
C.插入排序(正确答案)
D.堆排序
答案解析:
插入排序在近乎有序的数组上效率较高。
14.快速排序中,划分操作的时间复杂度平均为()[单选题]*
A.$O(1)
文档评论(0)