我已經開始在java中編程並試圖學習合併排序。我得到了算法,並用它編碼。我不明白我錯了什麼。有人可以幫助我這個瞭解合併排序和調試此代碼。如何合併排序?只需要知道我在哪裏弄錯了
public class Main {
public static void main(String[] args) {
// Merge Sort
int[] myArray = {2, 4, 1, 6, 8, 5, 3, 7};
mergeSort(myArray);
System.out.println((Arrays.toString(myArray)));
}
public static void mergeSort(int []toSortArray){
int n= toSortArray.length;
if (n < 2) {
return;
}
int mid = n/2;
int [] Left= new int [mid];
int []Right = new int[n-mid];
for(int i=0;i<mid-1;i++){
Left[i]=toSortArray[i];
}
for(int i=mid;i<n-1;i++){
Right[i-mid]=toSortArray[i];
}
mergeSort(Left);
mergeSort(Right);
merge(Left,Right,toSortArray);
}
public static void merge(int[] Left, int [] Right, int []SortedArray){
int nL = Left.length;
int nR= Right.length;
int i=0;//Index position for left array
int j=0;// index of position of Right array
int k=0;// Index position of sorted Array
while (i<nL && j<nR){
if (Left[i]<Right[j]) {
SortedArray[k] = Left[i];
i++;
k++;
}
if (Right[j]<Left[i]){
SortedArray[k] = Right[j];
j++;
k++;
}
}
while(i<nL){
SortedArray[k]=Left[i];
i++;
k++;
} while (j<nR){
SortedArray[k]= Right[j];
j++;
k++;
}
}
}
您目前得到什麼輸出?你得到一個錯誤,或只是一個不正確的排序數組? –
我認爲你需要在停止條件之前在n == 2的情況下進行排序。 – gba
我沒有得到任何錯誤,但它不工作執行。 – sanj780013