import java.util.Arrays;
public class MergeSort {
public static int[] sort(int[] nums,int low,int high){
int mid =(low+high)/2;
if(low<high){
sort(nums,low,mid);
sort(nums,mid+1,high);
merge(nums,low,mid,high);
}
return nums;
}
public static void merge(int[] nums,int low,int mid,int high){
int [] temp = new int[high - low +1];
int i = low;
int j = mid+1;
int k = 0;
while(i<=mid&&j<=high){
if(nums[i]<nums[j]){
temp[k++]=nums[i++];
}else{
temp[k++]=nums[j++];
}
}
while(i<mid){
temp[k++]=nums[i++];
}
while(j<=high){
temp[k++]=nums[j++];
}
for(int k2 = 0;k2<temp.length;k2++){
temp[k2+low]=temp[k2];
}
}
public static void main(String[] args){
int nums[]={5,4,3,2,1,8,9,0,6};
MergeSort.sort(nums, 0, nums.length-1);
System.out.println(Arrays.toString(nums));
}
}
报错如下
数组越界异常,通常是数组的角标为负数或者超出了数组个数。没找到原因。