bobo老师,在java归并排序时的问题
来源:3-2 归并排序法的实现
qq_无限之光_0
2019-03-12
public class MergeSort<E extends Comparable//归并排序
{
public void Sort(E arr[],int n)
{
mergesort(arr,0,n-1);
}
private void mergesort(E arr[],int l,int r)
{
if(l>=r)//不可能情况
return;
int mid=(l+r)/2;
mergesort(arr, l, mid);
mergesort(arr,mid+1, r);
Merge(arr,l,mid,r);//归并操作
}
private void Merge(E arr[],int l,int mid,int r)
{
E[] aux=(E[])new Object[r-l+1];
for(int i=l;i<=r;i++)
{
aux[i-l]=arr[i];//创建临时空间
}
int i=l;int j=mid+1;
for(int k=l;k<=r;k++)
{
if(i>mid)//特殊情况
{
arr[k]=aux[j-l];
j++;
}
else if(j>r)
{
arr[k]=aux[i-l];
i++;
}
else if(aux[i-l].compareTo(aux[j-l])<0)
{
arr[k]=aux[i-l];
i++;
}
else
{
arr[k]=arr[j-l];
j++;
}
}
}
}
在Main方法运行时似乎在E[]aux=(E[])object[r-l+1]这一行出现了异常 但不知道为什么会发生这个异常?
写回答
1回答
-
liuyubobobo
2019-03-12
什么异常呢?把产生错误的main函数或者Main类也提供一下?
另外,课程的所有代码都可以通过官方github获得。包括Java代码,按照课程的小节对应的。可以先尝试在你的环境下运行课程的官方代码,看是否有同样的问题?如果没有问题,请仔细比对调试自己的代码,看哪里有问题。调试代码,可是学习算法,锻炼编程能力的重要途径哦。
课程官方github传送门:https://github.com/liuyubobobo/Play-with-Algorithms
加油!:)
032019-03-12
相似问题