思路1:最小堆,时间复杂度O(nlogm)
分析:
1、建一个大小为m的最小堆,最小的元素在根部
2、遍历序列,若元素大于根部元素,则用该元素替换根部元素,并对最小堆进行调整,若元素小于等于根部元素,则不对最小堆做任何改变,这样遍历完整个序列后堆中的元素就是最大的m个元素
public class T1
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
while(in.hasNext())
{
int n=in.nextInt();
int m=in.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
{
arr[i]=in.nextInt();
}
solve(arr, m);
}
}
static void minHeap(int[] arr,int len,boolean isOnlyRoot)
{
int s=isOnlyRoot?0:len/