Java Quicksort帮助理解

时间:2016-02-12 04:08:21

标签: java quicksort

我试图了解java中的Quicksort算法。

我已经在我试图理解的部分旁边评论了我的问题。

public class Quciksort {

  static void qsort( char items[]) {
    qs(items,0,items.length-1); /*how can this method reference its parameters before the method is defined (below)?*/
  }



  private static void qs(char items[], int left, int right) //
  {
    int i, j;
    char x, y;

    i=left; j=right;
    x=items[(left+right)/2];

    do{
        while((items[i] < x) && (i<right)) i++;
        while((x < items[j]) && (j>left)) j--;

        if(i<=j){
            y=items[i];
            items[i]=items[j];
            items[j]=y;
            i++;j--;
            }
    }while (i<=j);

    if(left<j) qs(items, left, j);
    if(i<right) qs(items, i, right);
  }

}

1 个答案:

答案 0 :(得分:1)

你可能会把Java与C混淆,其中,如果我在上次使用它10年后记得很清楚,那么在调用之前声明一个方法是一个很好的做法,或者可能是必需的它。

在Java中,没有这样的要求。因此,您可以调用代码中稍后实现的方法。

关于参数,我不确定我是否正确地提出了您的问题,但在您的示例中,您使用数组qs作为第一个参数调用items(因为它被赋予{ {1}}方法),qsort的值为0,left的{​​{1}}数组的长度为items