这个快速排序算法如何运作?

时间:2010-06-03 11:44:54

标签: java sorting

private static char[] quicksort (char[] array , int left , int right) {
    if (left < right) {
        int p = partition(array , left, right);
        quicksort(array, left, p − 1 );
        quicksort(array, p + 1 , right);
    }
    for (char i : array)
    System.out.print(i + ” ”);
    System.out.println();
    return array;
}
private static int partition(char[] a, int left, int right) {
    char p = a[left];
    int l = left + 1, r = right;
    while (l < r) {
        while (l < right && a[l] < p) l++;
        while (r > left && a[r] >= p) r−−;
        if (l < r) {
            char temp = a[l];
            a[l] = a[r];
            a[r] = temp;
        }
    }
    a[left] = a[r];
    a[r] = p;
    return r;
    }
}

我对上述编码有疑问,我知道上面的编码会返回以下内容

B I G C O M P U T E R
B C E G I M P U T O R
B C E G I M P U T O R
B C E G I M P U T O R
B C E G I M P U T O R
B C E G I M O P T U R
B C E G I M O P R T U
B C E G I M O P R T U
B C E G I M O P R T U
B C E G I M O P R T U
B C E G I M O P R T U
B C E G I M O P R T U
B C E G I M O P R T U

当使用序列BIGCOMPUTER时,我的问题是有人可以向我解释代码中发生了什么以及如何发生?

我对快速排序算法有点了解,但在上面的例子中看起来并不相同。

2 个答案:

答案 0 :(得分:2)

这是快速排序。如果您了解算法,即使以不同方式实现,您也会认识到它。特别是这一点实际上是用命令式语言实现它的标准方法。

参考

答案 1 :(得分:1)

这是调试器的典型用例。通过调试器运行代码并逐步执行它,检查调用堆栈和局部变量。应该很清楚发生了什么。

如果您不熟悉调试器,那么启动imho,here are some excellent video Eclipse教程永远不会太早。