Quicksort代码不断给我StackOverflowError

我已经为快速排序编写了此代码,但是我遇到了StackOverflowError,但找不到原因。我试图确保递归具有正确的枢轴,前后值,这是我认为搞砸的地方,但目前我不太确定。

   {
       int intTemp = 0;
       int intPivotP = intPivot;
       int intFrontP = intFront;
       int intBackP = intBack;
       //System.out.println ("front");
       while (intFront != intBack - 1 && intFront < intBack)
       {
           //System.out.println ("while");
           if (aClone [intFront] <= aClone [intPivot] && aClone [intBack] >= aClone [intPivot])
           {
               intFront = intFront + 1;
               intBack = intBack - 1;
           }

           else if (aClone [intFront] > aClone [intPivot] && aClone [intBack] >= aClone [intPivot])
           {
               intBack = intBack - 1;
           }

           else if (aClone [intFront] <= aClone [intPivot] && aClone [intBack] < aClone [intPivot])
           {
               intFront = intFront + 1;
           }

           else if (aClone [intFront] > aClone [intPivot] && aClone [intBack] < aClone [intPivot])
           {
               intTemp = aClone [intBack];
               aClone [intBack] = aClone [intFront];
               aClone [intFront] = intTemp;
           }
       }

       if (intFrontP < intBackP)
       {
           //quick ((intBackP - intFrontP) / 2 + intFrontP,intFrontP,intPivotP - 1);
           quick ((intPivotP - intFrontP) / 2 + intFrontP,intPivotP - 1);
           quick ((intBackP - intPivotP) / 2 + intPivotP,intPivotP,intBackP);
       }
   }

为澄清起见,aClone是一个整数数组。

cimsimon 回答:Quicksort代码不断给我StackOverflowError

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3053593.html

大家都在问