Moi
Mulla on paniikki ja oon ihan käsi tietorakenteiden kanssa. Jos joku pystyy pikaisesti vastaamaan niin olisin ihan huippu kiitollinen!
Skenaario:
Kaksi pitkää(noin 6000 riviä) kaksisarakkeista listaa(esim comma separated), joissa listoissa ensimmäinen sarake sisältää id:n jonka avulla toisen listan toinen sarake pitää saada vastaamaan ensimmäisen listan toista saraketta. Id:t voi pitää sisällään kaikenlaisia merkkejä, joten järjestäminen ei kai tule tapaukseen.
Ajattelin jotain tämmöistä:
Listat luetaan auluihin:
string[,] taulu1 = new string[2,6000];
string[,] taulu2 = new string[2,6000];
Jokaiselle taulu1:n riville haetaan taulu2:sta vastaava
rivi ja muutetaan taulu2:m toinen sarake vastaamaan ko. taulu1:n toista saraketta.
Eli:
Kaksi taulua joissa molemmissa 6000 solua. Molemmat järjestämättömiä ja jokaiselle toisen taulun rivistä pitää löytyä vastaava rivi toisesta taulusta. Eli ajatellaa vaikka noin 6000*3000 hakua, joka tekee 18 000 000 hakua. Kauanko toi kestää hyvällä koneella tehtynä? Onko mitään ns. järkevää tapaa miten voisin tehdä ko. tapahtuman.
kiitos jo etukäteen, kk.
Vot joko kokeilla lätkiä nuo arvot johonkin tietokantaan (esim. mysql tai postgresql) ja tehdä kyselyt sillä.
Jos et kuitenkaan halua käyttää tietokantaratkaisua ja hakuja on kuitenkin tehtävä suuri määrä, niin ehdottomasti kannattaisi järjestää nuo alkiot, jonka jälkeen saisit pudotettua jokaisen haun hakuajan n:stä log2(n):ään (kaksikantainen logaritmi).
Käytetyllä lajittelualgoritmillakaan ei tuossa tapauksessa ole suuremmin väliä, jos lajittelu joudutaan tekemään vain yhden kerran.
Kyseinen operaatio tehdään hyvin harvoin, eli jos se pitää tehdä kerran pitkällä aikavälillä niin kauanko tuossa järjestämättömässä haussa menisi?
Tuosta tietokantakyselystä.. Jos laitan toisen listan tietokantaan ja teen foreach-loopissa jokaiselle toisen listan riville select kyselyn niin olisiko se todellakin nopeampi?
Mitähän kieltä tämä nyt yrittää olla?
Oisko C-Sharp olioista päätelleen tai Javaa.
Yksivaihto ehto voisi olla toteuttaa tuo XML ja sen XQueryllä.
http://www.w3schools.com/xquery/default.asp
C# tukeekin XML melkohyvin tai ainakin MS hehkuttaa kyseisistä ominaisuutta .NET arkkitehtuurissa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.