早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++数据结构题目求助!!!设有1000个基本有序的元素,希望用最快的速度挑选出其中前10个最大的元素,最后选用()排序法。查下归并排序的算法:A.冒泡排序B.快速排序

题目详情
c++数据结构题目求助!!!
设有1000个基本有序的元素,希望用最快的速度挑选出其中前10个最大的元素,最后选用(   )排序法。
查下归并排序的算法:
A.冒泡排序 B.快速排序 C. 直接插入排序 D. 归并排序
▼优质解答
答案和解析
A
1、因为是topN的问题,所以一般考虑“选择排序”算法,这里只有“冒泡”是选择排序。
2、虽然冒泡的时间复杂度是O(n^2),但在这里由于基本有序,且只挑选前10个元素,复杂度10n左右,而b、c、d都是要做全局的排序,没有利用“基本有序”这个特点。
3、如果没有基本有序的条件,取topN,改进的“快排”,平均效果会更好些。