校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 算法 > 高级排序(快排、堆排等)
题目

设有5000个待排序的记录的关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列哪个方法可以达到此目的 。(   )

A. 快速排序

B. 堆排序

C. 归并排序

D. 插入排序

解答

正确答案:B

首先,这个题的宗旨是以最短的时间达到局部有序!

所以应用堆排序这样处理:

1.取出10个数先进行堆排序。

2.依次遍历剩下的5000-10个数,每读一个数,跟堆里最大的数进行比较,如果比堆里的最大数还大,将其舍弃读下一个数,如果比堆里的最大数小,删除最大数,将其插入到原最大数位置,并进行堆排序。

3.重复2中步骤直至5000-10个数遍历完成。

这种做法的堆排序实际上并没有将5000个数全部变为有序。显然其他排序方法无法达到这样的效果。

C 0条回复 评论

帖子还没人回复快来抢沙发