-5

この質問のアルゴリズムを誰か教えてもらえますか? Q.挿入ソートは次のように再帰的な手続きで表現できます。A[1..n] をソートするために、A[1..n−1] を再帰的にソートし、ソートされた配列 A[1..n−1] に A[n] を挿入します。この再帰バージョンの挿入ソートの実行時間の再帰を記述します。

4

2 に答える 2

0

アイデアは、配列をインデックス 1 から n-1 まで再帰的にソートし、n 番目の要素を適切な場所に挿入することです。

アルゴリズム:

insertion_sort(Arr, n):
    if(n <= 1)
        return
    insertion_sort(Arr, n-1)
    temp = Arr[n]
    for (i = n; i > 0; i--):
        if(Arr[i] > temp):
            Arr[i+1] = Arr[i]
        else:
            break
    Arr[i+1] = temp
于 2016-07-13T15:05:05.800 に答える
0
public static void RecursiveInsertionSort(int[] array, int number) {
        if (number >= 1)
            return;

        RecursiveInsertionSort(array, number - 1);

        int currentnumber = array[number];
        int i;
        for (i = number - 1; i >= 0;) {

            if (array[i] > currentnumber) {
                array[i + 1] = array[i];
                i--;
            } else {
                break;
            }

        }
        array[i + 1] = currentnumber;

    }
于 2016-07-13T17:33:35.750 に答える