首先,这是一项家庭作业,我只是在寻找一些使用递归的指导。
我有一个大小为 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 个元素进行排序?
最佳答案
你被要求使用递归。您的问题对大小为 n 的数组进行排序。第一步是对该数组的 n-1 个元素进行排序。
考虑 m = n-1。你能把你的问题应用到大小为 m 的数组吗?即对前 m-1 个元素进行排序,然后将第 m 个元素放在正确的位置?
考虑 k = m-1。您可以对大小为 k 的数组执行相同的操作吗?
你知道如何使用递归来解决这个问题吗?
还要考虑如何结束递归;您将如何处理大小为 1 的数组?
关于c++ - 使用递归对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975787/