gpt4 book ai didi

java - Java 数组快速排序中的堆栈溢出

转载 作者:行者123 更新时间:2023-11-30 05:57:14 25 4
gpt4 key购买 nike

有谁知道为什么我在以下代码中的快速排序上会出现堆栈溢出?:

   private int[] concat( int[] less, int inxl, int pivot, int inxm, int[] more )
{

int[] concated = new int[ less.length ];

for( int inx = 0; inx < inxl; inx++ )
{

concated[ inx ] = less[ inx ];

}

concated[ inxl ] = pivot;
inxl++;

for( int inx = 0; inx < inxm; inx++ )
{

concated[ inxl ] = more[ inx ];
inxl++;

}

return concated;

}

private int[] quickSort( int[] array )
{

if( array.length <= 1 )
return array;

int[] less = new int[ array.length ];
int[] more = new int[ array.length ];
int inxl = 0, inxm = 0;

for( int inx = 1; inx < array.length; inx++ )
{

if( array[ inx ] < array[ 0 ] )
{

less[ inxl ] = array[ inx ];
inxl++;

}
else
{

more[ inxm ] = array[ inx ];
inxm++;

}

}

return concat( quickSort( less ), inxl, array[ 0 ], inxm, quickSort( more ) );

}

任何帮助将不胜感激。我正在为面试而复习,有点生疏,所以时间非常重要。预先感谢! :)

真诚的,彼得。

最佳答案

您的 quickSort 方法的递归是错误的。它应该使用较小的数组(或使用其他一些变小的参数)来调用自身,而不是使用相同长度的数组。这就是为什么你会得到无限递归,它显示为 StackOverflowError

关于java - Java 数组快速排序中的堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com