【发布时间】:2011-11-02 04:21:13
【问题描述】:
首先这是一个家庭作业,我只是在寻找一些关于使用递归的建议。
我有一个大小为 n 的伪随机整数数组。我需要从最低到最高对数组进行排序。下面是我创建的递归排序函数,但我知道我缺少一块但我不确定是什么。
template <typename T>
void sort_array_recur(T* random_array,T n)
{
//stop case
if(n = 1 )
{
if(random_array[n] < random_array[ n + 1 ])
{
T temp = random_array[n + 1];
random_array[n] == random_array[n + 1];
random_array[n + 1] == temp;
}
}
else
{
sort_array_recur(random_array, (n - 1));
}
}
我认为我缺少的是某种也需要递归调用的插入函数。我也四处寻找,我的情况似乎没有什么特别的(或者至少我无法理解它)。提前感谢您的宝贵时间。
编辑:
我想我忘了提到规范说“对 n 元素数组的前 n-1 个元素进行排序。然后将第 n 个元素放在 n-1 个排序元素中的适当位置”。我想我不明白如何对数组的前 n-1 个元素进行排序?
【问题讨论】:
-
试试看here。这是合并排序的一个例子,它是最快的 (nlogn) 算法之一。
-
您的意思是在多个地方使用赋值运算符 (=) 而不是比较运算符 (==)?
-
啊,是的,我的意思是赋值运算符,我以为我把它改了。
-
Quicksort (en.wikipedia.org/wiki/Quicksort) 是另一种用于教授递归函数的经典算法。它也是 NlogN。
-
@EmileCormier 快速排序看起来不错,但是规范说我必须“对 n 元素数组的前 n-1 个元素进行排序。然后将第 n 个元素放在 n 中的适当位置-1 排序的元素。”我仍然无法思考如何通过递归来做到这一点。
标签: c++ arrays sorting recursion