设有5000个待排序的记录的关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列哪个方法可以达到此目的 。( )
A. 快速排序
B. 堆排序
C. 归并排序
D. 插入排序
正确答案:B
首先,这个题的宗旨是以最短的时间达到局部有序!
所以应用堆排序这样处理:
1.取出10个数先进行堆排序。
2.依次遍历剩下的5000-10个数,每读一个数,跟堆里最大的数进行比较,如果比堆里的最大数还大,将其舍弃读下一个数,如果比堆里的最大数小,删除最大数,将其插入到原最大数位置,并进行堆排序。
3.重复2中步骤直至5000-10个数遍历完成。
这种做法的堆排序实际上并没有将5000个数全部变为有序。显然其他排序方法无法达到这样的效果。
帖子还没人回复快来抢沙发
某公园内有个奇怪的摊主小周,他只在星期一、星期二、星期三、星期五和星期六工作,而且他只出售4种商品:玩具汽车、充气气球、橡皮泥和遥控飞机。<
cookies,sessionStorage 和 localStorage 的区别?
怎么理解产品经理与技术研发之间的关系?
ArrayList和LinkedList的区别,以及各自是怎么实现扩容的?
帖子还没人回复快来抢沙发