Meines Wissens gibt es keinen Worst-Case-Algorithmus, der das folgende Problem löst:
Finden Sie bei einer Folge der Länge die aus endlichen ganzen Zahlen besteht, die Permutation, bei der jedes Element kleiner oder gleich seinem Nachfolger ist.
Aber gibt es einen Beweis dafür, dass es im transdichotomen Rechenmodell nicht existiert ?
Beachten Sie, dass ich den Bereich der Ganzzahlen nicht einschränke. Ich beschränke die Lösungen auch nicht auf Vergleichssorten.
Antworten:
Ganzzahlen können in -Zeit mit zusätzlichem Leerzeichen stabil sortiert werden. O ( 1 )O ( n ) O ( 1 ) Genauer gesagt, wenn Sie ganze Zahlen im Bereich , kann die in O (n) Zeit sortiert werden.[ 1 , n c ]n [ 1 , nc]]
Dies wurde erst vor ein paar Jahren von einem Team gezeigt, zu dem auch der verstorbene Mihai Pătrașcu gehörte (was niemanden überraschen sollte, der mit seiner Arbeit vertraut ist). Es ist ein bemerkenswertes Ergebnis, von dem ich überrascht bin, dass mehr Menschen nichts wissen, weil es bedeutet, dass das Problem des Sortierens von ganzen Zahlen (theoretisch) gelöst ist.
Es gibt einen praktischen Algorithmus (siehe oben), wenn Sie Schlüssel ändern dürfen. Grundsätzlich können Sie sortierte Ganzzahlen stärker komprimieren als unsortierte Ganzzahlen, und der zusätzliche Speicherplatz, den Sie gewinnen, entspricht genau dem zusätzlichen Speicher, der für die Radix-Sortierung benötigt wird. Sie geben auch einen unpraktischen Algorithmus an, der schreibgeschützte Schlüssel unterstützt.
quelle
Für Ganzzahlen können Sie die Radix-Sortierung verwenden . Es erstellt Buckets und sortiert dann eine Liste von Zahlen in wobei eine Obergrenze für die Größe in Bits einer beliebigen Ganzzahl und die Anzahl der zu sortierenden Elemente ist.b nO(bn) b n
Wenn es keine Obergrenze für die Größe Ihrer Ganzzahlen gibt, gibt es meines Erachtens keinen bekannten linearen Zeitsortieralgorithmus.
quelle