快速排序优化出现内存溢出

快速排序优化出现内存溢出

老师我参照您的思路去实现,使用插入排序去优化快速排序,下面是我的代码:

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了,有点想不出原因,麻烦老师看下

正在回答

登陆购买课程后可参与讨论,去登陆

1回答
InsertionSort.sort(arr,0,arr.length-1);


这里相当于是在对整个数组进行了插入排序,而不仅仅是 [l, r] 区间?


还有没有别的问题我也不敢肯定。你可以现在你的环境下运行课程的官方代码,看是否有问题?如果没有问题,请仔细调试跟踪,看自己的代码的问题在哪里?


课程官方代码传送门:https://git.imooc.com/class-105/Play-Algorithms-and-Data-Structures?utm_source=material


继续加油!:)

  • Simon站起来 提问者 #1

    哦,是的我明白了,我对整个数组进行了插入排序的优化,然后就引发了有序数组降低快速排序效率的bug,从而导致栈溢出

    2021-02-24 04:50:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2589    人
  • 解答问题       1090    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师