【发布时间】: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