大數據排序的思考

如果是數組,

先排序其中一部分,數組後面的一個個進來

之後插入排序,

/*
 * https://blog.csdn.net/beiyeqingteng/article/details/7534489
 https://blog.csdn.net/buster2014/article/details/50085425
https://blog.csdn.net/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);每次都需要調用接口自己拍;很簡單吧;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章