Mazanie struktury

Programovacie jazyky, rady, poradňa...
gregor123456
Amateur
Amateur
Príspevky: 11
Registrovaný: 14 mar 2013, 20:57

Mazanie struktury

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

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.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Mazanie struktury

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

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.
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: Mazanie struktury

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

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.
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.

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Mazanie struktury

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

veď na to narážal hneď, že aby to bolo v množine (teda usporiadané).
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: Mazanie struktury

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

audiotrack napísal:veď na to narážal hneď, že aby to bolo v množine (teda usporiadané).
aha, no tak to sa ospravedlnujem.
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.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Mazanie struktury

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

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.
axxis 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.
Ak by si chcel byť presný, tak dostaneš O( n.log(n) ) - tj. cena zoradenia :P
Napísať odpoveď