1
我在java中進行了以下代碼合併排序,但在輸出中我得到的輸出: -
我已經嘗試調試過去兩個小時。我在哪裏錯了?java中實現合併排序時出錯?
public class MergeSort {
public static void Mergesort(int[] a){
int n=a.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]=a[i];}
for(int i=mid;i<n-1;i++)
{right[i-mid]=a[i];}
Mergesort(left);
Mergesort(right);
merge(left,right,a);
}
public static void merge(int[]x,int[] y,int[] z){
int p=x.length;
int q=y.length;
int i=0;int j=0;int k=0;
while(i<p&&j<q){
if(x[i]<=y[j])
z[k++]=x[i++];
else
z[k++]=y[j++];
}
while(i<p) z[k++]=x[i++];
while(j<q) z[k++]=y[j++];
}
public static void main(String[] args) {
int[] arr={9,10,8,5,1,0};
Mergesort(arr);
for(int l=0;l<arr.length;l++)
{System.out.println(arr[l]);}
}
}
輸出是0 0 0 0 0 0
我覺得有一些錯誤的劃分!
謝謝@peter,我是java的新手,只是初學者感謝您的耐心。你使用了一個調試器?我不知道它是什麼以及如何使用它?你能給個提示/鏈接嗎?我在eclipse中編寫代碼JDE –
在你的IDE中,調試按鈕通常位於運行按鈕旁邊。我使用IntelliJ,但eclipse有一個出色的調試器。 –