[ LUGOS ] Nekaj C-ja / Sort znotraj stringa

Andrej Presern andrejp na luz.fe.uni-lj.si
Sre Apr 8 19:43:46 CEST 1998


andy wrote:
> 
> Heja!
> 
> A ima kdo kasno idejo kako sortirati en string, ce izgleda nekako
> takole:
> 
> char sText[10000];
> 
> vsebina:
> stevilka/stevilka tekst\nstevilka/stevilka tekst\nstevilka/stevilka
> tekst\n itd...
> 
> sortiral bi ga rad po stevilkah.
> 
> A ima kdo kaksno idejo kako bi to cimbolj enostavno naredil?

Hm. Tole pa izgleda kot domaca naloga;)

Ce ves, koliko elementov imas, si naredi array (ali morda kdo ve, kaksen
je slovenski izraz?) toliko elementov, postavi vanje kazalce na zacetke
vrstic in izvedi navaden qsort().

Ce bi pa rad to cimhitreje naredil, bos pa moral malo reorganizirati
podatke, tako da bosta stevilki zapisani kot celi stevili in ne kot
ascii stavek. To lahko naredis spotoma, ko bos stel, koliko elementov
imas. Na koncu zopet sledi navaden qsort()..

Ce je pri tem se omejitev, da kopice ni (torej morajo biti vse zamenjave
na mestu oz. in place), se vedno lahko reorganiziras podatke v zgoraj
opisano obliko, pri tem pa moras paziti, da ne bos prepisal ostalih
podatkov. Naceloma to ne bi smelo biti problem, saj imas v vsaki vrstici
na voljo vsaj pet prostih znakov (/, presledek, konec vrstice in po
najmanj en znak na ascii stevilo), ki jih lahko koristno uporabis.
Odvisno od situacije lahko iz prej omenjenih ekstra znakov skupaj
spraskas kar nekaj prostora, ki ga bo morda lahko dovolj tudi za array
za qsort(). V tem primeru podatke premakni na zacetek in jih stisni,
tako da bos na koncu dobil prej omenjeni prostor (to lahko tudi naredis
spotoma, ko bos stel vrstice).

Use your imagination, Luke:)

Andrej

-- 
Andrej Presern, andrejp na luz.fe.uni-lj.si




Dodatne informacije o seznamu Starilist