posiadam zaimplementowany w nastepujacy sposob algorytm QuickSort ze Splitem - problem polega na tym, ze w pewnym momencie przy wywolaniu ostatniej instrukcji z QuickSortSplit otrzymuje blad StackOverflowError i nie wiem dlaczego... ktos moze pomoc? :)
public static void QuickSortSplit(float[] pomiary, int indeksPoczatkowy, int indeksKoncowy)
{
int m = 0;
int n = pomiary.length;
m = Split(pomiary, indeksKoncowy);
if(m>1)// 0...m-1
QuickSortSplit(pomiary, 0, m-1);
if((n-m-1)>1) // m+1...n-1
QuickSortSplit(pomiary, m+1, n-1);
}
public static int Split(float[] pomiary, int indeksKoncowy)
{
int l = 1;
int r = indeksKoncowy;
while(l<= r)
{
while((l<=r) && (pomiary[r]>pomiary[0]))
r--;
while((l<=r) && (pomiary[l]<pomiary[0]))
l++;
if(l<r)
{
swap(pomiary, l, r);
l++;
r--;
}
}
if(r>0)
swap(pomiary,0,r);
return r;
}