2016-02-12 88 views
0

我想了解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); 
    } 

} 
+0

@Tacocat感谢您的回复,抱歉不会清除。我试图了解如果qs(char items [],int x,int y)直到后面才被创建,qsort()如何调用qs()方法并为其参数赋值? – gencode

+0

@vefthym哦,好吧,我只是假设,因为你不能像> {int r = x + y; int x,y; }你不能对方法做同样的事情。 – gencode

+0

我相信@vefthym已经回答了你的问题,然后〜 – Tacocat

回答

1

你可能被C混淆的Java,其中,如果我以后自去年10多年记好使用它,这是一个很好的做法,也许需要声明一个方法叫它。

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

关于参数,我不知道我正确地收到了你的问题,但在你的榜样,你是用数组items作为第一个参数调用qs(因为它给予了qsort法),其中0为left的值和items数组-1的长度,对于right

+0

非常感谢,这就是我问的:) – gencode