Musze wykonać sortowanie struktury za pomocą Quicksorta. Jest to struktura z książkami (tytuł, autor, rok wydania, cena). Wiem, że istnieje w C funkcja qsort, ale niestety nie mogę nią zrobić tego zadania, bo potrzebuje zliczyć liczbę porównań oraz zamian.
Na jakiej zasadzie powinienem podstawiać zmienną pivot? Teraz mam to zrobione tak i niestety wywala błędy w kompilatorze
int partition(struct daneks X[], int low, int high)
{
char pivot[MAX_TYTUL] = X[low];
char tytul[MAX_TYTUL];
int i = low-1, j = high+1;
while(i<j) {
while(X[--j]>pivot[MAX_TYTUL])
;
while(X[++i]<pivot[MAX_TYTUL])
;
if(i<j)
{
strcpy(tytul, X[i].tytul);
strcpy(X[i].tytul, X[j].tytul);
strcpy(X[j].tytul, tytul);
}
}
return j;
}
void quicksort(struct daneks X[], int low, int high)
{
if(low<high) {
int partition_index = partition(X,low,high);
quicksort(X, low, partition_index);
quicksort(X, partition_index+1, high);
}
}