qsort v strukture

Programovacie jazyky, rady, poradňa...
miki11
Light Expert
Light Expert
Príspevky: 74
Registrovaný: 09 feb 2008, 13:59

qsort v strukture

Príspevok od používateľa miki11 »

Cawo
mam dajaku strukturu v linearne zretazenom zozname.
mam tam vek a meno.
chcem usporiadat tychto x ludi podla veku a vypisat ich.
Ako triediaci algoritmus chcem QSORT.
Programovaci jazyk C .
Neveim s tym pohnut :cry: :cry:
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

no to asi tak lahko nepojde, kedze je to predpokladam jednosmerne... ak to teda vobec pojde ;)

ja by som radsej pouzil triedenie vyberom...

Kód: Vybrať všetko

FOR i=1 TO DLZKAZOZNAMU-1 DO
BEGIN
  prvok = PRVOK(i);
  FOR j=i+1 TO DLZKAZOZNAMU DO
  BEGIN
    IF prvok > PRVOK(j) THEN VYMENPRVKY(i, j);
  END
END
asi najvacsi problem bude ta funkcia vymenprvky...
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Ta funkcia by mohla byt asi takto:

Kód: Vybrať všetko

void vymen_prvky(void **a, void **b)
{
     static void *c=a;
     a=b;
     b=c;
}
Inak videl som uz aj triedenie spajaneho zoznamu aj s mergesortom, ale podla mna tu staci aj selectsort... :)

Ak posles zdrojak, tak ti to spravim(aby som vedel aj identifikatory pouzitych struktur atd.) :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: qsort v strukture

Príspevok od používateľa chrono »

miki11 napísal:...
Funkcia qsort (ktorá je v C dostupná) vie triediť iba polia (a aj keby si si urobil vlastnú verziu, nebola by vhodná na zreťazený zoznam; musela by totiž neustále prehádzať ten zoznam hore-dole, aby sa našiel prvok, ktorý sa bude porovnávať...).
Napísať odpoveď