快速排序优化出现内存溢出
老师我参照您的思路去实现,使用插入排序去优化快速排序,下面是我的代码:
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了,有点想不出原因,麻烦老师看下
17
收起
正在回答
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
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧