沒有人有任何想法,爲什麼我會在下面的代碼來讓我的快速排序堆棧溢出?:堆棧溢出的Java快速排序的陣列
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));
}
任何幫助將不勝感激。我正在修改採訪,並且有點生疏,所以時間非常重要。非常感謝! :)
此致, Piotr。
gotcha!當然......謝謝*感覺愚蠢的* :) – Piotr 2011-05-21 18:50:13
我應該使用ArrayList!調整越來越少的陣列是尷尬和膨脹的......除非你有什麼建議? – Piotr 2011-05-21 18:52:22
您可以使用遞歸函數的附加參數來說明要處理哪個數組的間隔。 (然後你的臨時陣列下一次通話只需要最大限度地擴大這個尺寸。) – 2011-05-21 18:56:16