62,628
社区成员
发帖
与我相关
我的任务
分享import java.util.Arrays;
/**
* Created by Alan on 2016/12/24.
*/
public class MergeSortUpdate {
public static <T extends Comparable<?super T>>void merge(T[] oldArray,T[] newArray,int left,int mid,int right){
int i=left;
int j=mid+1;
int k=0;
while(i<=mid && j<=right){
if(oldArray[i].compareTo(oldArray[j])<=0){
newArray[k++]=oldArray[i++];
}else{
newArray[k++]=oldArray[j++];
}
}
while(i<=mid){
newArray[k++]=oldArray[i++];
}
while(j<=right){
newArray[k++]=oldArray[j++];
}
for(int x=0;x<newArray.length;x++){
oldArray[x+left]=newArray[x];
}
}
public static <T extends Comparable<?super T>>void sort(T[] oldArray,T[] newArray,int left,int right){
if(left<right){
int mid=(left+right)/2;
sort(oldArray, newArray, left, mid);
sort(oldArray, newArray, mid + 1, right);
merge(oldArray,newArray,left,mid,right);
}
}
// public static <T extends Comparable<?super T>>void sort(T[] oldArray){
// T[] newArray=(T[]) new Comparable[oldArray.length];
// sort(oldArray,newArray,0,oldArray.length-1);
// }
public static void main(String[] args) {
Integer[] test=new Integer[]{2,3,5,4,7,9,1325,45,34,23,46,78};
Integer[] newArray=new Integer[test.length];
sort(test,newArray,0,test.length-1);
System.out.println(Arrays.toString(test));
}
}
用int类型写了个归并排序,可以正确运行。又用泛型写了,就出问题了。报错是Exception in thread "main" java.lang.NullPointerException