[セットトップ]javaデータ構造学習


本文は学習過程で蓄積したコードだけを記録し、詳しく述べない.
一.ソートの挿入
列を挿入すると、列の問題と同じように、1人目が先頭に立って、2人目と1人目が身長より高い位置を確定します.これにより、すでに列に立っている列が常に秩序あることが保証されます.3人目が来たら、順番に後ろから比較して、彼より高い人は後ろに平行移動して、最初の彼より高くない人に出会うまで、その後ろに挿入します.
/** *      * @param arr        */
    private static void InsertSort(int[] arr) {
        int j;//            
        int target;//       
        //         ,          
        for (int i = 1; i < arr.length; i++) {
            j = i;
            target = arr[i];
            //      ,              ,        ,      
            while(j>0 && target<arr[j-1] ){
                arr[j] = arr[j-1];//  
                j--;
            }
            //    ,j          
            arr[j] = target;
        }
    }

二.二分検索
2分検索は挿入する位置を探すための下付き文字や要素を探すのに非常に使いやすいが、元のシーケンスが秩序正しくなければならないことが要求されている.2分検索の思想は簡単で、半分の検索で、具体的にはコードを見ればいい.このコードは挿入位置を探すことであり、例えば1、2が3つ来たら、下付き文字は0から始めれば、挿入位置は2である
/** *             * @param arr        * @param e         */
    private static void binarySearch(int[] arr ,int e){
        int start = 0,end = arr.length-1;//end        
        int mid;
        while(start <= end){
            mid = (start+end)/2;
            if (arr[mid] > e) {
                end = mid - 1;
            }else {
                start = mid +1;
            }
        }
        System.out.println(start);//      
    }