Własna implementacja Quick Sort - błąd "invalid type"

0

Mam pytanie odnośnie funkcji szybkiego sortowania, napisałem z pomocą Internetu coś takiego

int n, tmp;

void quick_sort(int tab, int lewy, int prawy){
	
	if(prawy <= lewy) return;

	int i=lewy, j=prawy, 
	srodek = tab[(lewy+prawy)/2];
	
	while(true)
 
	{
	while(srodek>tab[++i]);
	while(srodek<tab[--j]);
 
    if(i<j){    
		tmp=tab[i];
    	tab[i]=tab[j];
    	tab[j]=tmp;
		}

    	else
    	break;
		}
		
	if(j > lewy)
	quick_sort(tab, lewy, j);
	if(i < prawy)
	quick_sort(tab, i, prawy);
}

kompilator pokazuje błąd: invalid type int[int] for array subscript
o co z tym chodzi?
czy oznacza to że tablica typu int nie może w tym przypadku zawierać elementów typu int?

0

A gdzie masz tam tablicę?

0

Fakt, oto reszta kodu

int main(){

int i;

	printf("Podaj ilosc elementow do posortowania:\n");
	scanf("%d",&n);
	int tab[n];	
	
	for(i=0;i<n;i++){
		printf("Podaj %d. element:\n",i+1);
		scanf("%d",&tab[i]);
		}
	
	quick_sort(tab, 0, n-1);
	
	printf("Elementy po posortowaniu:\n");
	for(i=0;i<n;i++)
	printf("%d",tab[i]);
	
	return 0;
}
0

naprawiłem ten błąd, zmieniłem tab na *tab w argumentach funkcji quicksort

0

Kompilator pewnie też pokazuje w które linii jest ten błąd. Na pewno masz źle deklarację funkcji:

void quick_sort(int tab, int lewy, int prawy)

Tutaj tab jest intem, a powinien być tablicą intów.

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