设有5000个待排序的记录的关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列哪个方法可以达到此目的 。( )
A. 快速排序
B. 堆排序
C. 归并排序
D. 插入排序
正确答案:B
首先,这个题的宗旨是以最短的时间达到局部有序!
所以应用堆排序这样处理:
1.取出10个数先进行堆排序。
2.依次遍历剩下的5000-10个数,每读一个数,跟堆里最大的数进行比较,如果比堆里的最大数还大,将其舍弃读下一个数,如果比堆里的最大数小,删除最大数,将其插入到原最大数位置,并进行堆排序。
3.重复2中步骤直至5000-10个数遍历完成。
这种做法的堆排序实际上并没有将5000个数全部变为有序。显然其他排序方法无法达到这样的效果。
帖子还没人回复快来抢沙发
一棵具有n个结点的二叉树,若它有m个叶子结点,则该二叉树中度为1的结点个数是多少?
小程序没有分享到朋友圈的功能,但是产品为了推广,需要曲线实现这个功能,请给出设计方案?
B2C网站上促销价格出错了,如何做危机公关?
cookies,sessionStorage 和 localStorage 的区别?
帖子还没人回复快来抢沙发