Java 快速排序代码示例。需要澄清一下吗

Java 快速排序代码示例。需要澄清一下吗,java,algorithm,sorting,quicksort,Java,Algorithm,Sorting,Quicksort,我是编程和java新手,我正在尝试理解一段实现“快速排序”算法对数组排序的代码。 现在..我理解了快速排序的基本思想,所以问题主要是关于代码本身。 在下面的代码(partition()方法)中,我们有一个主循环(while(ipivot)j--;),为什么下面的条件没有被执行?他们做的是j++并且代码应该在循环之外移动,不是吗?正如我从这个例子中所理解的那样…它不是 以下是我所说的代码: public class QuickSort { public static int list[

我是编程和java新手,我正在尝试理解一段实现“快速排序”算法对数组排序的代码。
现在..我理解了快速排序的基本思想,所以问题主要是关于代码本身。
在下面的代码(partition()方法)中,我们有一个主循环(while(ipivot)j--;),为什么下面的条件没有被执行?他们做的是j++并且代码应该在循环之外移动,不是吗?正如我从这个例子中所理解的那样…它不是

以下是我所说的代码:

public  class QuickSort {

    public static int list[] = {1,56,7,34,1,1,4,25,100,85,250};

    public static int partition(int arr[],int left,int right){

        int i = left;
        int j = right;
        int tmp;
        int pivot = arr[(left + right) / 2];

        while(i<=j){
             while(arr[i]<pivot){
                 i++;
             }
             while(arr[j]>pivot){
                 j--;
             }
             if(i<=j){
                 tmp = arr[i];
                 arr[i] = arr[j];
                 arr[j] = tmp;
                 i++;
                 j--;
             }
        }
        return i;
    }


    public static void quickSort(int arr[],int left,int right){
        int index = partition(arr,left,right);
        if(left<index-1){
            quickSort(arr,left,index-1);
        }
        if(index<right){
            quickSort(arr,index,right);
        }
    }
公共类快速排序{
公共静态整数列表[]={1,56,7,34,1,1,4,25100,85250};
公共静态int分区(int-arr[],int-left,int-right){
int i=左;
int j=右;
int tmp;
int pivot=arr[(左+右)/2];

而(i如果我正确理解你的问题,那么你只是在谈论分区循环的最后一次迭代

如果是这种情况,交换块没有被执行的原因很简单,因为If条件不再成立,因为我在j的右边停了一个位置。

你说“他们是j++的,代码应该在循环之外移动,不是吗?”.我在这段代码中没有看到j++代码,那么你到底在说代码的哪一部分?