C++Binary Search Sort二分検索ソートアルゴリズム


二分ルックアップソートアルゴリズムは実際には挿入ソート法の改良型であり、配列をソート済みとソート済みに分け、初期状態でソートされた部分は最初の要素のみであり、残りはソートされていない部分であり、ソートされた配列の上界が最初の要素であり、下界も最初の要素であり、自然に中間要素も最初の要素である.そして、並べ替えられていない部分の最初の要素(つまり配列全体の最初の要素)は最後の要素に遍歴し、並べ替えられた部分の中間要素と比較して、中間要素より大きい場合は、下界を中間要素+1に置き換えます.中間要素より小さい場合は上界を中間要素-1に置き換えます.位置が見つかるまでループします.位置が見つかったら、挿入位置とその後の要素をすべて1つ後ろに移動し、その要素を挿入します.
void
insertionSort (int N, keytype* A)
{


        /* Lucky you, you get to start from scratch */
        for (int i =1; i=0&&high>=0)
                {
                        int mid =(low + high) / 2;
                        if (A[i] == A[mid]) {
                                low = mid + 1;
                                position = low;
                               break;

                        }
                        if (A[i]>A[mid]) {
                                low = mid + 1;

                        }
                        else {
                                high = mid - 1;
                        }
                 position=low;
                }

                position=low;
                int buffer = A[i];
                int j =i-1;
                while (j>=position)
                        {
                                A[j + 1] = A[j];
                                j--;
                        }
                        A[position]=buffer;
                }



}