如果是数组,
先排序其中一部分,数组后面的一个个进来
之后插入排序,
/*
* https://blog.youkuaiyun.com/beiyeqingteng/article/details/7534489
https://blog.youkuaiyun.com/buster2014/article/details/50085425
https://blog.youkuaiyun.com/yjflinchong/article/details/7533972#reply
然后需要 写一个堆排序和快速排序;
* */
/*
或者是插入排序,去调最尾端的;
或者是100对100;然后将100归并,再次100归并
对象类型的,每次,加入,然后删除一部分,余下的就是最大的
优先级是public protect 同一包及其 子类
default private // 同一包
* */
public static void main(String[] args) {
int number = 20;
int k = 5;
int range = 21;
int[] array = new int[number];
Random random = new Random();
for (int i = 0; i < number; i++) {
array[i] = random.nextInt(range);
}
System.out.println(Arrays.toString(array));
int[] re=paiByTools(array, k);
System.out.println(Arrays.toString(re));
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
static int[] paiByTools(int[] array,int k){
int[] re=new int[k];
for (int i = 0; i < k; i++) {
re[i]=array[i];
}
Arrays.sort(re);
//取数,比较,移除一个,但是数组不好移除
for (int i = k; i < array.length; i++) {
int inde=-1;
for (int j = 0; j < re.length; j++) {
if(re[j]<array[i]){
if(j==k-1){
inde=j;
}
}
else{
inde=j-1;//4
break;
}
}
if(inde!=-1){
for (int j = 1; j <=inde; j++) {
re[j-1]=re[j];
}
re[inde]=array[i];
}
System.out.println(i+"---"+Arrays.toString(re));
}
return re;
}
但是通常是对象的数据排序,有时候还有并列的情况
那就 Collections.sort(list);list.sublist(1,11);每次都需要调用接口自己拍;很简单吧;