我正在做CLRS的算法导论练习。这不是评分作业或其他什么,我只是想理解问题。
问题如下:
我们可以将插入排序表示为以下递归过程。为了对A[1..n]进行排序,我们递归地对A[1..n-1]进行排序,然后将A[n]插入到已排序的数组A[1..n-1]中。编写此递归版本的插入排序的运行时间的递归式。
问题的解决方案:
由于在最坏情况下将A[n]插入已排序的数组A[1. .n−1]需要O(n)时间,因此如果n=1,则得出递归式T(n)=O(1),否则为T(n−1)+O(n)。解决此递归式的方法是T(n)=O(n^2)。
所以我知道如果n=1,则它已经排序,因此需要O(1)时间。
但我不理解递归部分(T(n-1))。 T(n-1)是否意味着每次递归调用时,我们都会对数组的一个元素进行排序?这似乎不正确。
问题如下:
我们可以将插入排序表示为以下递归过程。为了对A[1..n]进行排序,我们递归地对A[1..n-1]进行排序,然后将A[n]插入到已排序的数组A[1..n-1]中。编写此递归版本的插入排序的运行时间的递归式。
问题的解决方案:
由于在最坏情况下将A[n]插入已排序的数组A[1. .n−1]需要O(n)时间,因此如果n=1,则得出递归式T(n)=O(1),否则为T(n−1)+O(n)。解决此递归式的方法是T(n)=O(n^2)。
所以我知道如果n=1,则它已经排序,因此需要O(1)时间。
但我不理解递归部分(T(n-1))。 T(n-1)是否意味着每次递归调用时,我们都会对数组的一个元素进行排序?这似乎不正确。