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(logn)

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(logn)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(log2n)


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? logn
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(log2n)
Chao Xu

1
(a1,,an)(b1,,bn)nlgn

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(logn)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(logn)O(logn)
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.