Sortieralgorithmus, so dass jedes Element


39

Gibt es bekannte Vergleichs-Sortieralgorithmen, die sich nicht auf das Sortieren von Netzwerken reduzieren, sodass jedes Element -mal verglichen wird ?O(log⁡n)

Soweit ich weiß, besteht die einzige Möglichkeit, mit -Vergleich für jedes Element zu sortieren, darin, ein AKS-Sortiernetz für n Eingaben zu erstellen und die Eingabe im Sortiernetz auszuführen.O(log⁡n)n

AKS ist nicht einfach zu implementieren und hat einen unpraktischen konstanten Faktor. Daher gibt es Gründe, nach anderen Algorithmen zu suchen.

Ein Algorithmus mit Vergleiche pro Element , das scheint nicht eine Sortier Netzwerk zu implizieren , präsentiert hier . (iirc, dies wurde zuerst von Rob Johnson auf dem Algorithmus-Seminar von Stony Brook vorgestellt).O(log2⁡n)


2
Ich verstehe die Frage nicht: Viele sequentielle Algorithmen scheinen Ihrer Anfrage zu entsprechen. zB Merge Sort ist ein klassischer Sortieralgorithmus, der nicht mehr als Vergleiche pro Element durchführt. Vielleicht fragen Sie nach parallelen Sortieralgorithmen? log⁡n
— Jeremy

4
@ Jeremy: Wenn zwei Listen fusionieren, und ( b 1 , . . . , B n ) , kann man am Ende Vergleich eine 1 gegen jede der b 1 , . . . , b n , dh Ω ( n ) Vergleiche pro Element. Und dies war nur ein "Zusammenführungs" -Schritt. Natürlich der Durchschnitt(a1,...,an)(b1,...,bn)a1b1,...,bnΩ(n)Die Anzahl der Vergleiche ist notwendigerweise gering, aber die Frage ist nach der Komplexität im schlimmsten Fall .
— Jukka Suomela

6
Ich glaube das ist möglich. Sortiernetzwerke sind datenunabhängig und verfügen über vorgegebene Vergleiche. Ein Sortieralgorithmus kann jedoch abhängig von den Daten zwischen verschiedenen Operationen wählen. Man kann Merge-Sortierung in einen Algorithmus mit -Vergleich für jedes Element ändern und scheint kein Sortierungsnetzwerk zu implizieren. Reddit.com/comments/9jqsi/…O(log2⁡n)
— Chao Xu

1
(a1,…,an)(b1,…,bn)nlg⁡n

2
Jetzt gibt es eine neue verwandte (aber hoffentlich viel einfachere) Frage: cstheory.stackexchange.com/questions/8073/…
— Jukka Suomela

Antworten:


17

Nach der Diskussion mit Michael T. Goodrich scheint der parallele Sortieralgorithmus von Cole für EREW PRAM die Aufgabe zu erfüllen. Sehen

O(log⁡n)O(1)

Eine Erweiterung dieses Algorithmus für parallele Zeigermaschinen finden Sie in


Wir würden gerne wissen, wer Sie sind! : D
— Tayfun Pay

@
— jemand

O(log⁡n)O(log⁡n)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.