快速排序优化出现内存溢出
老师我参照您的思路去实现,使用插入排序去优化快速排序,下面是我的代码:
public static <E extends Comparable<E>> void sort2(E[] arr){
sort2(arr,0,arr.length-1);
}
private static <E extends Comparable<E>> void sort2(E[] arr,int l,int r){
//只是在这用了插入排序替代了if(l>=r) return;
if(r-l <= 15){
//使用插入排序优化
InsertionSort.sort(arr,0,arr.length-1);
return;
}
int p = partition(arr,l,r);
//这里递归
sort2(arr,l,p-1);
sort2(arr,p+1,r);
}
我这里递归就出现了内存溢出,我参考您的代码,你递归的时候调用的是sort而不是sort2,我代码中有return了,有点想不出原因,麻烦老师看下
17
收起
正在回答
1回答
InsertionSort.sort(arr,0,arr.length-1);
这里相当于是在对整个数组进行了插入排序,而不仅仅是 [l, r] 区间?
还有没有别的问题我也不敢肯定。你可以现在你的环境下运行课程的官方代码,看是否有问题?如果没有问题,请仔细调试跟踪,看自己的代码的问题在哪里?
课程官方代码传送门:https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures?utm_source=material
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星