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

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

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

1
public static  <E extends Comparable<E>> void  sort2(E[] arr){<br><br>    sort2(arr,0,arr.length-1);<br>}<br>private static  <E extends Comparable<E>> void  sort2(E[] arr,int l,int r){<br>    //只是在这用了插入排序替代了if(l>=r) return;<br>    if(r-l <= 15){<br>        //使用插入排序优化<br>        InsertionSort.sort(arr,0,arr.length-1);<br>        return;<br>    }<br>    int p = partition(arr,l,r);<br>    //这里递归<br>    sort2(arr,l,p-1);<br>    sort2(arr,p+1,r);<br>}<br>

我这里递归就出现了内存溢出,我参考您的代码,你递归的时候调用的是sort而不是sort2,我代码中有return了,有点想不出原因,麻烦老师看下

正在回答

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

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


这里相当于是在对整个数组进行了插入排序,而不仅仅是 [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 星
算法与数据结构
  • 参与学习       2603    人
  • 解答问题       1096    个

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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