**
代码报错:Exception in thread “main” java.lang.StackOverflowError,为什么?
**
private static void sort(int []arr,int left,int right) {
if(left<right) {
int mid=(left+right)/2;
int []temp=new int[arr.length];
sort(arr,left,mid);
sort(arr,mid,right);
merge(arr,left,mid,right,temp);
}
}
这里报错,说明栈溢出了,会无限做递归运算。
修改后:
private static void sort(int []arr,int left,int right) {
if(left<right) {
int mid=(left+right)/2;
int []temp=new int[arr.length];
sort(arr,left,mid);
sort(arr,mid+1,right);
merge(arr,left,mid,right,temp);
}
}
这样能正常运行
原因其实就是没有加一,分块时就会重复Mid这个元素。