package 小米oj;
import java.util.Arrays;
import java.util.Comparator;
public class 前K大数 {
public static void main(String[] args) {
int a[] = {4543,1,5,32,45,333,22,44,10000,55555};
Integer temp[] = get(a,5);
Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer i1, Integer i2) {
return i2-i1;
}
};
Arrays.sort(temp,cmp);
for(int i=0;i<temp.length;i++)
System.out.println(temp[i]);
}
public static Integer[] get(int a[],int k)
{
arrangeRight(a, 0, a.length-1, k);
Integer re[] =new Integer[k];
int p=0;
for(int i=a.length-1;i>=a.length-k;i--)
{
re[p++] = a[i];
}
return re;
}
public static void arrangeRight(int a[],int start,int end,int k)
{
int i = start,j=end;
while(i!=j)
{
while(j>i&&a[i]<=a[j])
j--;
swap(a,i,j);
while(j>i&&a[i]<=a[j])
i++;
swap(a,i,j);
}
if(end-i+1==k)
return;
else {
if(end-i+1<k)
arrangeRight(a,start,i-1,k-end+i-1);
else
arrangeRight(a, i+1, end, k);
}
}
public static void swap(int a[],int i,int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
其中从大到小排序用到了comparator接口,直接百度用的,有时间要好好领悟一波
https://www.cnblogs.com/stonesingsong/p/6547412.html