Pathologische Sortierung
Ihr Chef hat verlangt, dass Sie einen Sortieralgorithmus entwickeln, um die Leistung Ihrer Unternehmensanwendung zu verbessern. Nachdem Sie den Antrag geschrieben haben, wissen Sie, dass Sie ihn wahrscheinlich nicht wesentlich schneller machen können. Um Ihren Chef nicht zu enttäuschen, haben Sie sich entschlossen, einen neuen Algorithmus zu entwickeln, der noch besser funktioniert als das Sortieren bestimmter Datensätze. Natürlich können Sie nicht klar machen, dass der Algorithmus nur in einigen Fällen funktioniert, und Sie möchten ihn so dunkel wie möglich gestalten.
Ziel dieses Wettbewerbs ist es, eine Sortierroutine in der Sprache Ihrer Wahl zu schreiben, die bei bestimmten Datensätzen eine bessere Leistung als bei anderen erzielt und wiederholbare Ergebnisse liefert. Je genauer die Klassifizierung ist, die die Geschwindigkeit bestimmt, desto besser. Der Algorithmus muss in irgendeiner Weise sortieren, sodass ein Algorithmus, der davon abhängt, dass die Daten bereits vollständig sortiert sind (wie bei einem Algorithmus, der nichts tut), oder ein Algorithmus, der davon abhängt, dass die Daten vollständig in umgekehrter Reihenfolge sortiert sind, beide ungültig sind. Der Sortieralgorithmus muss alle Datensätze korrekt sortieren.
Geben Sie nach der Vorstellung Ihrer Routine eine Erklärung an, warum dies nur für bestimmte Datensätze funktioniert, und führen Sie Testläufe für mindestens einen Satz guter (schneller) und einen Satz schlechter (langsamer) Daten durch. Hier geht es darum, Ihrem Chef zu beweisen, dass Sie auf eine bessere Sortiermethode gestoßen sind, sodass mehr Testdaten besser sind. Natürlich zeigen Sie Ihrem Chef nur die Testergebnisse aus den guten Daten, sodass der Fehler in den erforderlichen Testdaten nicht zu offensichtlich sein kann. Falls für Ihre Sprache zutreffend, zeigen Sie bitte, dass Ihr Algorithmus schneller ist als der in Ihrer Sprache integrierte Sortieralgorithmus.
Beispielsweise könnte man einen Einfügungssortierungsalgorithmus einreichen, wobei die guten Daten Daten sind, die bereits nahezu sortiert sind, und die schlechten Daten vollständig zufällige Daten sind, da die Einfügungssortierung bei nahezu sortierten Daten gegen O (n) geht. Dies ist jedoch nicht sehr gut, da mein Chef wahrscheinlich bemerken würde, dass alle Testdaten von Anfang an fast sortiert sind.
Dies ist ein Beliebtheitswettbewerb , daher gewinnt die Antwort mit den meisten Stimmen nach 7 Tagen (21. Mai).
Wenn mich niemand schlägt, möchte ich eine Community-Wiki-Antwort einreichen, die gleichmäßig verteilte Datensätze nutzt.