Articles

Vad är sortering?


Bästa svaret

Inom datavetenskap, en sorteringsalgoritm är en algoritm som placerar element i en lista i en viss ordning. De mest använda beställningarna är numerisk ordning och lexikografisk ordning. Effektiv sortering är viktig för att optimera effektiviteten hos andra algoritmer (som sök- och sammanslagningsalgoritmer) som kräver att ingångsdata finns i sorterade listor. Sortering är också ofta användbart för kanonisering av data och för att producera läsbara utdata. Mer formellt måste utdata från vilken sorteringsalgoritm som helst uppfylla två villkor:

  • Utgången är i icke-minskande ordning (varje element är inte mindre än föregående element enligt önskad total ordning);
  • Utgången är en permutation (en omordning, men behåller alla originalelementen) av ingången.

Vidare lagras ingångsdata ofta i en matris, som tillåter slumpmässig åtkomst, snarare än en lista, som endast tillåter sekventiell åtkomst; även om många algoritmer kan tillämpas på vilken typ av data som helst efter lämplig modifiering.

Sorteringsalgoritmer kallas ofta för ett ord följt av ordet ”sortera” och används grammatiskt på engelska som substantivfraser, för exempel i meningen, ”det är ineffektivt att använda insättningssortering i stora listor”, frasen insättningssortering avser sorteringsalgoritmen för insättningssortering.

Svar

Att sortera en miljard objekt är definitivt inom räckhåll om du kan hålla dem i minnet. Du behöver som O (n log n) jämfört, eller hur? Om du inte kan sortera vad som passar i minnet på din dator (eller datorer om du har ett distribuerat system) och slå samman resultaten. Vid ett tillfälle på 1990-talet hade en modifierad sammanslagningssort världshastighetsrekord och en super linjär per CPU-hastighet upp.

Något annat du gör är dock när N blir stor (eller faktiskt när något blir långsamt för rimliga ingångar) tittar du närmare på vad du verkligen behöver.

Varför behöver du sortera objekten? Om du bara letar efter dubbletter finns det mycket snabbare sätt! Om du vill bearbeta botten (eller topp) 5\% finns O (n) algoritmer som kan partitioneras baserat på inlägg sortera position!

När saker blir långsamma tittar du på vad som gör, och innan du räknar ut om det är den snabbaste algoritmen gör vad som helst, du räknar ut om det faktiskt är rätt sak att göra alls! (Undantag: om den snabbare ”vad som helst” är en redan felsökt tunn kan du bara slå in, då kan det vara bättre att göra det … som om du hittar dig ar Testa om en matris innehåller något element många gånger kan det vara enklare att ersätta matrisen med en uppsättning och se om det nu är tillräckligt snabbt att du inte bryr dig om att om du gjorde ytterligare sex timmars forskning kan du eliminera hälften av kontrollerna, eller vad som helst).

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *