hochoptimiertes Algo zum Sortieren eines Arrays bestehend aus nur 0s n 1s

7

Ich muss einen hochoptimierten Algo finden, um ein Array zu sortieren, das nur aus 0s n 1s besteht.

Meine Version der Lösung besteht darin, die Nummer zu zählen. von Nullen (sagen Sie x) und Einsen (sagen Sie y). Sobald Sie das getan haben, setzen Sie x Nullen in das Array, gefolgt von y 1s. Dies macht es O (n).

Irgendein Algo, der besser als das läuft ??? Diese Frage wurde mir im Interview gestellt.

    
akaHuman 17.05.2012, 14:37
quelle

6 Antworten

10

Da Sie jedes Eingabeelement n prüfen müssen, können Sie O(n) nicht verbessern.

Da Ihr Algorithmus O(1) memory benötigt, können Sie das auch nicht verbessern (es gibt nichts asymptotisch besser als O(1) ).

    
NPE 17.05.2012, 14:44
quelle
7

Wir können nicht besser als O (n), aber es sieht so aus, als könnten wir es in einem Durchgang machen

%Vor%     
Anish Dasappan 17.05.2012 22:50
quelle
5

Wenn Sie das Array summieren, könnten Sie die Anzahl der 1en haben, etwas effizienter, aber immer noch O (n).

    
Kevin DiTraglia 17.05.2012 14:39
quelle
3

Sie können nicht effizienter sein als O (N), weil jedes Element überprüft werden muss.

    
Tudor 17.05.2012 14:39
quelle
2

Von welcher Art von "Array" reden wir? Wenn wir die Bits in einer 16-Bit-Ganzzahl ohne Vorzeichen zählen würden, dann wurden mehrere O (1) -Zeitalgorithmen entwickelt: siehe Schnelle Bit-Zählroutinen .

Dies ist einer der dort vorgestellten Algorithmen; die eine, die sie die geschickte parallele Zählung nennen:

%Vor%     
ZeroOne 17.05.2012 14:50
quelle
0

Das klingt wie eine Abakus-Art mit einem Stab. Jetzt bin ich neugierig, wer dein Interviewer war.

Ссылка

    
Noah Buddy 21.05.2012 22:06
quelle

Tags und Links