java 归并排序算法问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:32:35
//分治算法:归并排序
public void mergeSort(int [] data,int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
mergeSort(data, low,mid);
mergeSort(data,mid+1,high);
merge(data,low,high,mid);
}
}
//将两个有序表归并
public void merge(int [] data,int low,int high,int mid)
{
int [] result=new int [high+1];
int i=low,j=mid+1;
int k=0;
for(;i<=mid&&j<=high;k++)
{
if(data[i]<data[j])
{
result[k]=data[i];
i++;
}
else
{
result[k]=data[j];
j++;
}
}
while(i<=mid&&k<result.length)
{
result[k]=data[i];
k++;
i++;
}
while(j<=high&&k<result.length)
{
result[k]=data[j];
k++;
j++;
}
//将归并后的数字复制到原数组
for(int m=0;m<result.length;m++)
{
data[low]=result[m];

int[] result= new int [high-low+1];

复杂进eclipse测试了下,没有问题。不知道你想干什么……

debug一下,可以监视里面每个变量的值,
不过用断言会更专业一些,
我对算法还不是很在行
逻辑问题还得你慢慢调试