即時嘗試執行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++;
}
}
你會寫什麼樣的錯誤你好嗎?他們認爲的線是什麼? –
它不是一個錯誤。我的輸出不正確。 – ueg1990