首先,这是一个家庭作业,我只是在寻找使用递归的一些指示。
我有一个大小为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元素进行排序?
答案 0 :(得分:1)
要求您使用递归。您的问题对大小为n的数组进行排序。第一步是对该数组的n-1个元素进行排序。
考虑m = n-1。你能将你的问题应用到一个大小为m的阵列吗?即对第一个m-1元素进行排序,然后将第m个元素放在正确的位置?
考虑k = m-1。你能用尺寸为k的阵列做同样的事吗?
你是否看到如何使用这个问题进行递归?
还要考虑如何结束递归;你会用1号阵列做什么?