设有3000个无序的元素,希望用最快速度挑选出其中前10个最大的元素。指出在快速排序,堆排序,归并排序,基数排序和shell排序中最好的一种,说明原因。
答:堆排序是最好的。五个排序方法中,快速排序和堆排序可以在每一趟排序结束后确定至少一个元素的最终位置,那么进行10趟排序就可以找到前10个最大的元素。而归并排序,基数排序和shell排序均需要完成整个排序算法,才能得到前10个最大的元素,故排除。对于堆排序,每一趟排序结束后,都能够找到最大值,那么只需要10趟排序,就能够得到前10个最大的元素。而对于快速排序,每次选取区间内第一个元素作为枢纽值,每趟排序过程中将其与其他的元素进行比较,所确定的是枢纽元素的最终位置,不能保证前10趟排序确定的是最大的是10个元素;故排除快速排序。综上,对于本题,堆排序是最好的排序方法。
【考点】本题考查数据结构--排序--内部排序--内部排序算法的综合比较。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811