【问题标题】:Need help to determine if a given algorithm is iterative or recursive需要帮助来确定给定算法是迭代的还是递归的
【发布时间】:2021-01-05 04:27:27
【问题描述】:

所以我有一个计算机科学模块的项目,他们要求我们执行迭代快速和合并排序,所以我编写了一个算法,但我不确定它是迭代的还是递归的。

任何反馈都将不胜感激,在此先感谢!

这是算法(它有效,只需要知道它是否是迭代的)

public static void quickSort(ArrayList<school> x){

    if(x.isEmpty()){        
        return ;
    }
    
    ArrayList<school> smaller = new ArrayList<>();     
    ArrayList<school> greater = new ArrayList<>();      

    school pivot = x.get(0);        // pivot value
    int i;      // incremental counter
    school j;       // looping value

    for( i=1; i < x.size();i++){
        j = x.get(i);                                       
        if( j.getName().compareTo(pivot.getName()) < 0 ){       
            smaller.add(j);
        }else{
            greater.add(j);
        }
    }

    quickSort(smaller);
    quickSort(greater);

    x.clear();

    x.addAll(smaller);
    x.add(pivot);
    x.addAll(greater);

}

【问题讨论】:

  • 递归 函数调用自身(可能间接调用)。它们包含一些迭代并不会使它们的类别迭代
  • 迭代快速排序使用堆栈来避免递归,其中索引对被压入堆栈并从堆栈中弹出。迭代合并排序通常意味着bottom up merge sort

标签: java sorting recursion iteration quicksort


【解决方案1】:

quickSort 函数是从自身内部调用的,因此这是递归的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2015-04-23
    • 2011-09-21
    • 2017-09-12
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多