Articles

Mitä lajittelu on?


Paras vastaus

Tietojenkäsittelytieteessä a lajittelualgoritmi on algoritmi, joka asettaa luettelon elementit tiettyyn järjestykseen. Yleisimmin käytettyjä tilauksia ovat numeerinen järjestys ja leksikografinen järjestys. Tehokas lajittelu on tärkeää muiden algoritmien (kuten haku- ja yhdistämisalgoritmien) tehokkuuden optimoimiseksi, jotka edellyttävät syötetietojen olevan lajiteltuina luetteloina. Lajittelusta on usein hyötyä myös tietojen kanonisointiin ja ihmisten luettavissa olevan tuotoksen tuottamiseen. Muodollisemmin minkä tahansa lajittelualgoritmin lähdön on täytettävä kaksi ehtoa:

  • Lähtö on järjestyksessä, joka ei pienene (kukin elementti ei ole pienempi kuin edellinen elementti halutun kokonaisjärjestyksen mukaan);
  • Tulos on permutaatio (uudelleenjärjestely, mutta säilyttää kaikki alkuperäiset elementit) syötteestä.

Lisäksi tulodata tallennetaan usein matriisiin, joka sallii satunnaisen pääsyn luettelon sijaan, joka sallii vain peräkkäisen pääsyn; vaikka monia algoritmeja voidaan soveltaa mihin tahansa tietotyyppiin sopivien muutosten jälkeen.

Lajittelualgoritmeihin viitataan usein sanana, jota seuraa sana ”lajittelu”, ja kieliopillisesti niitä käytetään englanniksi substantiivilausekkeina, esimerkiksi esimerkki lauseessa ”lisäyslajittelun käyttäminen suurissa luetteloissa on tehotonta”, lauseen lisäyslajittelu viittaa lisäyslajittelulajittelualgoritmiin.

Vastaus

Miljardin objektin lajittelu on ehdottomasti tavoitettavissa, jos pystyt pitämään ne muistissa. Tarvitset kuten O (n log n) verrattuna, eikö? Jos et voi t, voit lajitella tietokoneen (tai tietokoneiden, jos sinulla on hajautettu järjestelmä) muistiin sopivan, ja yhdistää tulokset. Yhdessä vaiheessa 1990-luvulla muokatulla yhdistämislajilla oli maailmanennätysrekisteri ja super lineaarinen CPU: ta kohti nopeutuu.

Jotain muuta teet kuitenkin, kun N kasvaa suureksi (tai oikeastaan ​​aina, kun mikä tahansa hidastuu kohtuullisten syötteiden vuoksi), katsot tarkemmin mitä todella tarvitset.

Miksi sinun on lajiteltava objektit? Jos etsit vain kaksoiskappaleita, on paljon nopeampi tapa! Jos haluat käsitellä alimman (tai ylimmän) 5\%: n, on O (n) algoritmeja, jotka voivat osioida postin perusteella lajittele asento!

Kun tavarat hidastuvat, katsot mitä tapahtuu, ja ennen kuin selvitätkö onko nopein algoritmi, tee mitä tahansa, selvitätkö, onko se oikeastaan ​​oikea asia ollenkaan! (Poikkeus: jos nopeampi ”mikä tahansa” on jo virheenkorjattu ohut, voit vain lyödä sisään, niin voi olla parempi tehdä se … kuten jos löydät sinut ar Testaus, jos taulukossa on jotakin elementtiä monta kertaa, voi olla yksinkertaisempaa korvata taulukko joukolla ja nähdä, onko se nyt tarpeeksi nopeaa, ettet välitä siitä, että jos tekisit vielä kuusi tuntia tutkimusta, voit poistaa puolet sekit tai mitä tahansa).

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *