首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
5lt专题
有 n 个无序整数( n10000), 则找出其中最大的 M 个数字( 5lt;Mlt;10), 所需要的最小时间复杂度为:
第一种算法: 直接对n个数进行堆排序,每次建立一个大根堆,只需完成排序的前m次。这种的方法时间复杂度是O(mlogn),每建立一次大根堆需要 logn 的时间,总共m次。 第二种算法: 最开始选取前m个数,用这m个数建立一个小根堆。接下来,对后面n-m个数进行遍历,用根结点与这n-m个数进行比较,当发现一个数比根结点大时,交换,然后重新建立一个小根堆。最终我们可以得到m个最大的数字。这种方法
阅读更多...