在我多年的编程中,我已经使用递归来解决简单的问题,但我完全清楚,有时你需要迭代,因为内存/速度问题.
所以,在很久以前的某个时候,我去尝试找出是否存在任何"模式"或文本书的方式将常见的递归方法转换为迭代而没有发现任何东西.或者至少我记不住任何事都会有所帮助.
我最近刷了一些基础知识,发现合并排序链表是一个非常好的挑战.如果你有一个很好的实现,那么在这里展示它.
我的教授分配了一个问题,我们必须使用Stacks(或Queues)来创建一个非递归的MergeSort.目前的代码如下:
private static void sort(Comparable[] a, int[] index, int[] aux, int lo, int hi) {
if (hi <= lo) return;
int mid = lo + (hi - lo) / 2;
sort(a, index, aux, lo, mid);
sort(a, index, aux, mid + 1, hi);
merge(a, index, aux, lo, mid, hi);
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理这个问题,任何帮助将不胜感激.我知道我必须使用while循环来模拟递归.但是,我如何分割实际值?另外,如何跟踪分区值的中间值?
我真的很困惑这个问题.任何帮助,将不胜感激!