2013-07-07 38 views
-1

即時嘗試執行mergesort,但我不知道錯誤是什麼。即時通訊確定我的邏輯很好,但我搞亂了索引。真的很感謝一些反饋:MergeSort不工作

public static void mergeSort(long[] arr, int low, int high) { 
    if (low < high) { 

     int mid = (high + low)/2; 
     mergeSort(arr, low, mid); 
     mergeSort(arr, mid+1, high); 
     merge(arr, low, mid, high); 
    } 
} 

public static void merge(long[] arr, int low, int mid, int high) { 
    long[] tmp = new long[arr.length]; 
    //System.out.println((high-low+1)==arr.length); 
    System.arraycopy(arr, 0, tmp, 0, arr.length); 
    int i = low; 
    int j = mid + 1; 
    int k = 0; 
    while (i <= mid && j <= high) { 
     if (tmp[i] <= tmp[j]) { 
      arr[k] = tmp[i]; 
      i++; 
     } else { 
      arr[k] = tmp[j]; 
      j++; 
     } 
     k++; 
    } 


    while (i <= mid) { 

     arr[k] = tmp[i]; 
     i++; 
     k++; 
    } 

    while (j <= high) { 

     arr[k] = tmp[j]; 
     j++; 
     k++; 
    } 

} 
+0

你會寫什麼樣的錯誤你好嗎?他們認爲的線是什麼? –

+0

它不是一個錯誤。我的輸出不正確。 – ueg1990

回答

2

對不起,以前的worng answear,沒有看多少。

現在我發現了你的錯誤,並且對它進行了測試。

在這裏,他是

int k = 0; 

應該

int k = i; 
+1

哦哇!非常感謝!!! :) – ueg1990

+0

你好,歡迎:) –