当前位置: 代码迷 >> J2SE >> 小白有关问题 快速排序 内存溢出
  详细解决方案

小白有关问题 快速排序 内存溢出

热度:123   发布时间:2016-04-23 19:41:21.0
小白问题 快速排序 内存溢出
//快速排序
class QuickSort
{
public void sort(int left,int right,int a[])
{
int l=left;
int r=right;
int m=a[(int)((right+left)/2)];
int temp=0;
while(l<r)
{
while(l<r&&a[l]<=m)
{
l++;
}
while(l<r&&a[r]>=m)
{
r--;
}
temp=a[l];
a[l]=a[r];
a[r]=temp;

}
sort(left,l,a);
sort(l+1,right,a);


}
public void showR(int a[])
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
}


提示内存溢出,不知道怎么改
------解决思路----------------------
sort方法使用了递归调用。在方法递归调用sort方法时没有做递归判断,出会现无限递归,最终方法栈就溢出了。所以楼主你需要处理好递归结束的逻辑处理(sort方法何时能得到结果,即何时才有return操作)。处理好判断逻辑后就能解决栈溢出的问题了。楼主可以先调试下,最终完成不了快排的效果,再参考这篇文章:快速排序算法Java实现,最后还有不明白的可以追问。
  相关解决方案