归并排序遇到的问题

tn_java 2016-12-24 05:10:04
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
at java.lang.Integer.compareTo(Integer.java:1216)
at java.lang.Integer.compareTo(Integer.java:52)
at MergeSortUpdate.merge(MergeSortUpdate.java:12)
at MergeSortUpdate.sort(MergeSortUpdate.java:33)
at MergeSortUpdate.sort(MergeSortUpdate.java:31)
at MergeSortUpdate.sort(MergeSortUpdate.java:31)
at MergeSortUpdate.main(MergeSortUpdate.java:43)
...全文
161 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tn_java 2016-12-26
  • 打赏
  • 举报
回复
引用 1 楼 emoheithree 的回复:

//int 是基本数据类型,int[] a=new int[]是可以生成空间中存在的int数组
而Interger 类型你虽然声明了它的数组但是没有对数组成员挨个初始化所以出现NullPointException
thank you
朔北冥 2016-12-24
  • 打赏
  • 举报
回复

//int 是基本数据类型,int[] a=new int[]是可以生成空间中存在的int数组
而Interger 类型你虽然声明了它的数组但是没有对数组成员挨个初始化所以出现NullPointException

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧