【发布时间】:2016-08-16 18:14:40
【问题描述】:
如果只调用较小的分区数组,如何对较大的分区数组进行排序?如果以递归方式完成,我只会看到更改 b 位置的代码(QS 在 if 和 else 语句中调用)。
public static void QS(int[] b, int h, int k) {
int h1= h; int k1= k;
// invariant b[h..k] is sorted if b[h1..k1] is sorted
while (b[h1..k1] has more than 1 element) {
int j= partition(b, h1, k1);
// b[h1..j-1] <= b[j] <= b[j+1..k1]
if (b[h1..j-1] smaller than b[j+1..k1])
QS(b, h, j-1); h1= j+1;
else
QS(b, j+1, k1); k1= j-1;
}
}
【问题讨论】:
-
能否提供更多文档
-
我从未见过这种编码方式。这段代码没有调用自身两次(如我之前所见),而是使用 while 循环代替第二次递归。
标签: java algorithm sorting big-o quicksort