2014-09-19 72 views
0
 public int[] indexSort(){ 
    int[] sortedarr = new int[max]; 

    for(int i=0;i<max;i++){ 
     int key=0; 
     int duplicates = 0; 
     for(int j=0;j<max;j++){ 
      if(arr[i]>arr[j]) key++; 
      else if(arr[i]==arr[j]) duplicates++; 

     } 
     while(duplicates>0&&key<max){ 


      sortedarr[key] = arr[i]; 
      key++; 
      duplicates--; 
     } 
    } 
    return sortedarr; } 

while循環是如何工作的?即使沒有重複項(重複項= 0),while循環仍然執行。索引排序。一些奇怪的事情正在進行

我的思想很困惑。也是索引排序應該由O(n^3)運行?

回答

1

總有一個「重複」:當i == j

你或許應該在i+1啓動內循環:

for(int i=0;i<max;i++){ 
    int key=0; 
    int duplicates = 0; 
    for(int j=i+1;j<max;j++){ 
+0

媽沒看到。你的實現並沒有解決編譯錯誤,但它給出了錯誤的輸出。我只需要通過放置i!= j條件來補償我的代碼中始終存在的重複項。感謝您的幫助,索引排序應該是n^3?我無法在Google上找到任何有關此類信息的內容。 – Lifter 2014-09-19 12:24:24

相關問題