以下陈述的算法应该是什么?

时间:2016-07-13 13:53:45

标签: algorithm sorting search clrs

有谁能告诉我这个问题的算法? 问:我们可以将插入排序表达为递归过程,如下所示。为了对A [1..n]进行排序,我们递归地对A [1..n-1]进行排序,然后将A [n]插入到已排序的数组A [1..n-1]中。写一个递归版插入排序的运行时间的重复。

2 个答案:

答案 0 :(得分:0)

这个想法是递归地将数组从索引1排序到n-1,然后将第n个元素插入到apt位置。

算法:

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

答案 1 :(得分: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;

    }