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

数组上Java快速排序中的堆栈溢出,java,arrays,stack-overflow,quicksort,Java,Arrays,Stack Overflow,Quicksort,有人知道为什么在下面的代码中,我的快速排序会出现堆栈溢出吗 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 ] = le

有人知道为什么在下面的代码中,我的快速排序会出现堆栈溢出吗

   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 ) );

   }
private int[]concat(int[]less、int-inxl、int-pivot、int-inxm、int[]more)
{
int[]concated=新int[less.length];
对于(int-inx=0;inx如果(array.length您的
快速排序
方法的递归错误。它应该使用更小的数组(或使用更小的其他参数)调用自己,而不是相同长度的数组。这就是为什么会出现无休止的递归,它显示为一个
堆栈溢出错误

我想知道你是否会永远递归。在快速排序方法中,你在哪里缩小数组大小?你在数组大小上使用了println,以查看它是否变小了吗?

我有点慢,明白吗ms…1+对Paulo说,你把我揍了一顿!:)我应该使用ArrayList!调整越来越少的数组的大小是很尴尬的,而且是很复杂的…除非你有什么建议?你可以在递归函数中使用一个额外的参数,它说明要处理数组的哪个间隔。(那么下一次调用的临时数组只需最大为该大小。)