2016-02-12 72 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