我写了一些简短的递归程序,现在正在进行递归排序。到目前为止,我一直在使用2个输入,数组和索引。是否有一个递归的排序方法,只需要一个数组作为输入?我认为冒泡排序适用于此,但它也使用索引来跟踪位置。
如果有人想知道,我有一个HW进行递归排序(我已经使用数组和索引做了),这只是为了看看它是否可以在没有索引的情况下完成它。
答案 0 :(得分:0)
我相信只需将数组作为参数即可执行递归合并排序: http://en.wikipedia.org/wiki/Merge_sort
编辑: 我想你可以跳过这样的索引:
function bubble_sort(arr)
{
for (i=0 to arr.length-1)
{
if(arr[i] > arr[i+1])
{
swap(arr, i);
return bubble_sort(arr);
}
}
return arr;
}
这不是一个完美的冒泡,因为起始指数始终为零。复杂性仍然是O(n ^ 2)。如果您愿意克隆阵列(并浪费大量内存),那么您可以替换
return bubble_sort(arr);
使用:
return combineArrays(arr.subArray(0, i), bubble_sort(arr.subArray(i, n)));
然后,只使用数组作为参数,实现递归冒泡排序是一种有效但浪费的方法。