個人学習シリーズ-分治アルゴリズム


分治アルゴリズムを起こす...
ぶんかつアルゴリズム
概要
分治アルゴリズムは重要なアルゴリズムであり、字面上の解釈は「分而治之」であり、複雑な問題を2つ以上の同じまたは似たようなサブ問題に分解することである.最後のサブ問題が簡単に直接解くことができるまで、元の問題の解、すなわちサブ問題の解の合併、このテクニックは多くの効率的なアルゴリズムの基礎であり、例えばソートアルゴリズム(高速ソート、集計ソート)、フーリエ変換(高速フーリエ変換)...
分治アルゴリズムの3つのステップ
1.分解:原問題をいくつかの規模の小さい問題に分解し、互いに独立し、原問題の形式と同じサブ問題
2.解決:サブ問題の規模が小さい場合は直接解決し、そうでない場合は各サブ問題を再帰的に解く
3.連結:各サブ問題の解を元の問題の解に連結する
コード実装(クイックソート)
    public static int[] quickSort(int[] arr) {

        sort(arr, 0, arr.length - 1);
        return arr;

    }

    public static void sort(int[] arr, int left, int right) {

        //             
        if (left > right) {
            return;
        }
        //      
        int base = arr[left];
        int i = left;
        int j = right;
        //     
        while (i != j) {
            //       ,   base   
            while (arr[j] >= base && i < j) {
                j--;
            }
            //       ,   base   
            while (arr[i] <= base && i < j) {
                i++;
            }
            //        ,       i j  ,              ,      
            if (i < j) {
                int num = arr[i];
                arr[i] = arr[j];
                arr[j] = num;
            }
            //                
            arr[left] = arr[i];
            arr[i] = base;
            //       
            sort(arr, left, j - 1);
            sort(arr, i + 1, right);
        }

    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(quickSort(new int[]{4, 3, 2, 7, 5, 88, 33})));
    }

正直に言うと、これはまだよく分かりませんが、ここではまず消化してから、戻って書いてみます.
個人情報サイト
http://www.zhouzhaodong.xyz