Articles

Wat is sorteren?


Beste antwoord

In de informatica is er een sorteeralgoritme is een algoritme dat elementen van een lijst in een bepaalde volgorde plaatst. De meest gebruikte volgordes zijn numerieke volgorde en lexicografische volgorde. Efficiënt sorteren is belangrijk voor het optimaliseren van de efficiëntie van andere algoritmen (zoals zoek- en samenvoegalgoritmen) waarvoor invoergegevens in gesorteerde lijsten moeten staan. Sorteren is ook vaak handig voor het canoniseren van gegevens en voor het produceren van door mensen leesbare uitvoer. Formeler gezien moet de uitvoer van elk sorteeralgoritme aan twee voorwaarden voldoen:

  • De uitvoer is in niet-afnemende volgorde (elk element is niet kleiner dan het vorige element volgens de gewenste totale volgorde);
  • De uitvoer is een permutatie (een herschikking, maar met behoud van alle originele elementen) van de invoer.

Verder worden de invoergegevens vaak opgeslagen in een array, die staat willekeurige toegang toe, in plaats van een lijst, die alleen opeenvolgende toegang toestaat; hoewel veel algoritmen kunnen worden toegepast op beide typen gegevens na geschikte wijziging.

Sorteeralgoritmen worden vaak een woord genoemd, gevolgd door het woord sorteren, en worden grammaticaal in het Engels gebruikt als zelfstandig naamwoord, voor voorbeeld in de zin: “het is inefficiënt om invoegsortering te gebruiken op grote lijsten”, verwijst de zin-invoegsortering naar het sorteeralgoritme voor invoegsortering.

Antwoord

Het sorteren van een miljard objecten is zeker binnen handbereik als u ze in het geheugen kunt bewaren. Je moet zoals O (n log n) vergeleken, toch? Als je niet kunt, kun je sorteren wat in het geheugen op je computer past (of computers als je een gedistribueerd systeem hebt), en de resultaten samenvoegen. Op een gegeven moment in de jaren negentig had een aangepaste samenvoegsortering het wereldsnelheidsrecord en een super lineair per CPU-snelheid.

Iets anders dat je echter doet, is dat wanneer N groot wordt (of eigenlijk wanneer iets traag wordt voor redelijke invoer), je nader kijkt naar wat je echt nodig hebt.

Waarom moet je de objecten sorteren? Als je alleen naar duplicaten zoekt, zijn er veel snellere manieren! Als je de onderste (of bovenste) 5\% wilt verwerken, zijn er O (n) -algoritmen die kunnen partitioneren op basis van post sorteer positie!

Als dingen traag worden, kijk je naar wat er aan het doen is, en voordat je erachter komt of dat het snelste algoritme is, doe wat het ook is, zoek je uit of dat echt het juiste is om te doen (Uitzondering: als het snellere wat dan ook een al debugged thin is, kun je er gewoon in klappen, dan is het misschien beter om dat te doen … alsof je merkt dat je een e testen of een array vele malen een bepaald element bevat, kan het eenvoudiger zijn om de array te vervangen door een set en te kijken of het nu snel genoeg is zodat het u niet kan schelen dat als u nog eens zes uur onderzoek doet, u de helft van de de cheques, of wat dan ook).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *