[c] Algorytm magicznych piatek

0

Witam mam problem z algorytmem magicznych piatek, stworzylem taka o to fukncje ale cos tu jest nie tak program sie radosnie wysypuje :/ :(

http://wazniak.mimuw.edu.pl/index.php?title=Algorytmy_i_struktury_danych/Selekcja#Algorytm_magicznych_pi.C4.85tek

 
int SelectMedian(int A[], int p, int r)
    	{
		int start;
		start=p;

		while(start <= r)
		{
			if(start+5 <= r)
				InsertionSort(A,start,start+5); 
			else
				InsertionSort(A,start,r);
			start+=5;
		}

		int i,bsize,ceiler;
		bsize=ceil((r+1-p)/(5));
		printf("bsize:%d",bsize);
		bsize*=2;
		bsize++;
		int B[bsize];//
		start=p;
		i=0;

		while(start <= r)
		{
			if(start+5 <= r)
			{
				ceiler=start+3;
				B[i]=A[ceiler-1];
				B[i+bsize]=ceiler-1;
			}
			else
			{
				ceiler=start+1+floor(((r-start+1))/(2));
				B[i]=A[ceiler-1];
				B[i+bsize]=ceiler-1;
			}
			i=i+1;
			start+=5;
		}

		if(bsize <= 5)
		{
                 InsertionSort(B,0,bsize);
                 ceiler=ceil((bsize)/(2));
                 return B[ceiler];

		}
		else
		{
			return SelectMedian(B,0,bsize-1);
		}
	}
0

Ide o zaklad, ze wyjezdzasz poza zakres tablicy B (co to w ogole za nazwa ?!) -> inkrementujesz zmienna "i" nie zwazajac na to, ze nie moze przekroczyc rozmiaru bsize-1...

0

Omfg... nie no, tego wczesniej nie zauwazylem...

B[i+bsize]=ceiler-1; !!! co to jest ? B ma rozmiar bsize !

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