Articles

Hva er sortering?


Beste svaret

I datalogi, en sorteringsalgoritme er en algoritme som setter elementer i en liste i en bestemt rekkefølge. De mest brukte ordrene er numerisk rekkefølge og leksikografisk rekkefølge. Effektiv sortering er viktig for å optimalisere effektiviteten til andre algoritmer (for eksempel søke- og flettealgoritmer) som krever at inngangsdata er i sorterte lister. Sortering er også ofte nyttig for kanonisering av data og for å produsere menneskelig lesbar produksjon. Mer formelt må utdataene fra en hvilken som helst sorteringsalgoritme tilfredsstille to betingelser:

  • Utgangen er i ikke-fallende rekkefølge (hvert element er ikke mindre enn det forrige elementet i henhold til ønsket totalrekkefølge);
  • Utgangen er en permutasjon (en omorganisering, men beholder alle de opprinnelige elementene) av inngangen.

Videre lagres inngangsdataene ofte i en matrise, som tillater tilfeldig tilgang, i stedet for en liste, som bare tillater sekvensiell tilgang; selv om mange algoritmer kan brukes på begge typer data etter passende modifikasjoner.

Sorteringsalgoritmer blir ofte referert til som et ord etterfulgt av ordet «sort», og brukes grammatisk på engelsk som substantivfraser, for eksempel i setningen «det er ineffektivt å bruke innsettingssortering på store lister,» uttrykket innsettingssorter refererer til sorteringsalgoritmen for innsettingssortering.

Svar

Sortering av en milliard objekter er definitivt innen rekkevidde hvis du kan holde dem i minnet. Du trenger som O (n log n) sammenlignet, ikke sant? Hvis du ikke kan, kan du sortere det som passer i minnet på datamaskinen din (eller datamaskiner hvis du har et distribuert system), og slå sammen resultatene. På et tidspunkt på 1990-tallet hadde en modifisert sammenslåingssorter verdenshastighetsrekord og en super lineær per CPU-hastighet opp.

Noe annet du gjør er imidlertid når N blir stor (eller faktisk når noe blir tregt for rimelige innganger), ser du nærmere på hva du virkelig trenger.

Hvorfor trenger du å sortere objektene? Hvis du bare leter etter duplikater er det langt raskere måter! Hvis du vil behandle bunnen (eller toppen) 5\% er det O (n) algoritmer som kan partisjonere basert på innlegg sorter posisjon!

Når ting blir sakte, ser du på hva som gjør, og før du finner ut om det er den raskeste algoritmen, gjør hva som helst, du finner ut om det faktisk er riktig å gjøre i det hele tatt! (Unntak: hvis jo raskere «uansett» er en allerede feilsøkt tynn kan du bare smelle inn, så kan det godt være bedre å gjøre det … som om du finner deg Hvis du tester om en matrise inneholder noe element mange ganger, kan det være enklere å erstatte matrisen med et sett og se om det nå er raskt nok til at du ikke bryr deg om at hvis du gjorde ytterligere seks timers forskning, kunne du eliminere halvparten av sjekkene, eller hva som helst).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *