Dobrý deň
mám zoznam štruktúr absahujúci dva stringy (meno a heslo) a potreboval by som vymazat vsetky struktury zo zoznamu ktore maju rovnake mena a priezviska okrem tej ktora je prva v zozname. Čiže ak sú rovnaké stringy v strukture na druhom stvrtom a piatom mieste tak ponecha len druhu a ostatne vymaze. Potreboval by som len logicky vysvetlit ako postupovat. tie stringy ukladat niekde a potom porovnávať alebo ako? Za každú radu ďakujem.
Mazanie struktury
Re: Mazanie struktury
Najjednoduchšie je štruktúry už ukladať do množiny, ak je to možné. Takéto mená vyhadzuješ vždy, či tam tie duplicity na niečo aj potrebuješ?
Ak nie množinou, tak (primitívny) postup je jednoduchý: zoberieš prvý reťazec a porovnáš s každým za ním, Ak narazíš na rovnaký, zmažeš ho. Zoberieš ďalší v rade a zase porovnáš všetky za ním. Takto potom postupuješ ďalej, až prejdeš všetky.
Ak nie množinou, tak (primitívny) postup je jednoduchý: zoberieš prvý reťazec a porovnáš s každým za ním, Ak narazíš na rovnaký, zmažeš ho. Zoberieš ďalší v rade a zase porovnáš všetky za ním. Takto potom postupuješ ďalej, až prejdeš všetky.
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: Mazanie struktury
a nebolo by rychlejsie si to najskor utriedit a potom porovnavat n-ty a n+1-vy retazec s tym, ze ak su rovnake jeden vymazes? miesto n^2 prechodov tak dostanes n.BX napísal:Najjednoduchšie je štruktúry už ukladať do množiny, ak je to možné. Takéto mená vyhadzuješ vždy, či tam tie duplicity na niečo aj potrebuješ?
Ak nie množinou, tak (primitívny) postup je jednoduchý: zoberieš prvý reťazec a porovnáš s každým za ním, Ak narazíš na rovnaký, zmažeš ho. Zoberieš ďalší v rade a zase porovnáš všetky za ním. Takto potom postupuješ ďalej, až prejdeš všetky.
Pripadne aj bez triedenia sa to da spravit ako hash tabulka. Retazce bude citat sekvencne a vkladat novy zaznam sa bude len ak neexistuje index na prave citany retazec (zlozitost N)
Btw. aky jazyk je na to pouzity? V SQL a LINQu sa da spravit query na unikatne hodnoty.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Mazanie struktury
veď na to narážal hneď, že aby to bolo v množine (teda usporiadané).
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: Mazanie struktury
aha, no tak to sa ospravedlnujem.audiotrack napísal:veď na to narážal hneď, že aby to bolo v množine (teda usporiadané).
ja som totiz vychadzal z toho, ze mnozina (set) nemusi byt usporiadana. akurat sa v nej kazdy prvok moze nachadzat iba jedenkrat (co je stav, ktory triedenie ani nepotrebuje). ak teda rozmyslam v urovni matematickej definicie mnoziny, resp. jej implementacie v jave.
Re: Mazanie struktury
V princípe je efektívnejšie implementovať usporiadanú množinu, než tú neusporiadanú. Matematicky samozrejme usporiadaná byť nemusí.
Lenže pridávanie a hľadanie v neusporiadanej množine má zložitosť vždy N. Usporiadaním sa to dá výrazne zlepšiť. Ak mi ide len o tú vlastnosť "každý prvok iba raz", tak by som ju iste nepoužil.
btw.
Lenže pridávanie a hľadanie v neusporiadanej množine má zložitosť vždy N. Usporiadaním sa to dá výrazne zlepšiť. Ak mi ide len o tú vlastnosť "každý prvok iba raz", tak by som ju iste nepoužil.
btw.
Ak by si chcel byť presný, tak dostaneš O( n.log(n) ) - tj. cena zoradeniaaxxis napísal:a nebolo by rychlejsie si to najskor utriedit a potom porovnavat n-ty a n+1-vy retazec s tym, ze ak su rovnake jeden vymazes? miesto n^2 prechodov tak dostanes n.