[java] blad StackOverflowError - algorytm QuickSort

0

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;
	} 
0

Rekurencja wywoluje sie zbyt duzo razy.

0

Ten algorytm to jeden wielki błąd. Powypisuj sobie na System.out wartości indeksów i zastanów się co robisz źle. To co napisałeś w ogóle QuickSorta nie przypomina.

0

hm... moim zadaniem jest zaimplementowanie pseudokow dostepnych w zalacznikach... wydaje mi sie, ze ten kod, ktory napisalem odzwierciedla te pseudokody...

0

No to ci się źle wydaje. W twoim kodzie przekazujesz tą samą tablicę co dostałeś, a w pseudokodzie przekazywana jest podtablica tablicy podanej jako parametr.

1 użytkowników online, w tym zalogowanych: 0, gości: 1