【问题标题】:What should be the algorithm of the below statement?以下语句的算法应该是什么?
【发布时间】:2016-11-16 03:51:23
【问题描述】:

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

【问题讨论】:

  • 不清楚你在问什么。你是问递归插入排序,还是问递归关系怎么写?

标签: algorithm sorting search clrs


【解决方案1】:
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;

    }

【讨论】:

    【解决方案2】:

    想法是从索引 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
    

    【讨论】:

    • 它的运行时间是多少?请告诉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多