Quicksort - zamiana na kod

0

Witam. Mam do wykonania pewne zadanie, z którym mam problem. Mam podaną funkcję qsort:

int sortuj_model(struct symbol_zrodla model_zrodla[],int liczba_symboli_modelu,char *nazwapliku_msort)
{  qsort(model_zrodla,liczba_symboli_modelu,sizeof(struct symbol_zrodla), porownaj);

gdzie funkcja porownaj to:

int porownaj(const void *operand1,const void *operand2) 
{
    const struct symbol_zrodla *pointer1 = (const struct symbol_zrodla*) operand1;
    const struct symbol_zrodla *pointer2 = (const struct symbol_zrodla*) operand2;
    if((pointer1->czestosc)==(pointer2->czestosc)) return 0;
    else if((pointer1->czestosc)<(pointer2->czestosc))return 1;
    else return -1;
}

potem jest dalsza część programu

Moje pytanie - czy ktoś potrafi i czy mógłby mi pomóc zamienić funkcję qsort na funkcję sortowania, ale napisaną w c? Może źle się wyraziłem. Chodzi o to, że nie mogę korzystać z qsort, ale mam napisać własną funkcję sortującą. Jest ktoś w stanie pomóc?

0

Myślę, że wszyscy tutaj to potrafią. Nie napisałeś z czym dokładnie masz problem, tylko prosisz o gotowca.

0

Próbowałem z czymś takim, bo już kiedyś robiłem quitsorta za pomocą takiej funkcji:

n = liczba_symboli_modelu
int i = 0, j = 0, temp;
  while(i<n)
  {
    while(j<n-1)
    {
      if(porownaj(arg1, arg2 ==1)
      {
        temp = tab[j];
        tab[j] = tab[j+1];
        tab[j+1] = temp;
      }
      ++j;

Problem w tym, że nie wiem co wstawić w miejsce arg1, arg2 i czym zastąpić tab. Tab zastąpiłbym tym "model_zrodla", ale już w if wyskakuje mi error.

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