gpt4 book ai didi

java - java实现归并排序出错?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:53 26 4
gpt4 key购买 nike

我在 java 中为合并排序编写了以下代码,但在输出中我得到了输出:-
0 0 0 0 0 0
在过去的两个小时里,我一直在调试它。我哪里出错了?

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
我认为分区有问题!

最佳答案

使用调试器我可以看到

for(int i=0;i<mid-1;i++)

for(int i=mid;i<n-1;i++)

应该是

for(int i = 0; i < mid; i++)

for(int i = mid; i < n; i++)

您的代码没有复制最后一个元素,最终您只有全 0

关于java - java实现归并排序出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com