Wenn wir eine Liste mit Zahlen haben, brauchen wir Bitslog nnLogn
Nein: Wenn wir eine Liste von Zahlen zwischen und , brauchen wir Bits. Es gibt im Allgemeinen keine Beziehung zwischen und .2 k - 1 k k log n02k- 1kkLogn
Wenn die Zahlen alle verschieden sind, haben und die Grundsortierung nach verschiedenen Zahlen daher eine zeitliche Komplexität von . Im Allgemeinen ist die Komplexität der Radix-Sortierung wobei die Anzahl der zu sortierenden Elemente und die Anzahl der Bits in jedem Element ist.Ω ( n log n ) Θ ( nlogn≥kΩ(nlogn)n kΘ(nk)nk
Zu sagen, dass die Komplexität der Radix-Sortierung bedeutet, dass für die Zahlen eine feste Bitgröße verwendet wird. Dies impliziert, dass es für ausreichend große viele doppelte Werte geben wird.nO(n)n
Es gibt einen allgemeinen Satz, dass eine Array- oder Listensortiermethode, bei der zwei Elemente gleichzeitig verglichen werden, im schlimmsten Fall nicht schneller als kann. Die Radix-Sortierung funktioniert nicht beim Vergleichen von Elementen, aber die gleiche Beweismethode funktioniert. Die Radix-Sortierung ist ein Entscheidungsprozess, um zu bestimmen, welche Permutation auf das Array angewendet werden soll. es gibtPermutationen des Arrays und der Radix-Sortierung treffen binäre Entscheidungen, dh sie entscheiden, ob zwei Elemente in jeder Stufe vertauscht werden sollen oder nicht. Nach binären Entscheidungen kann die Radix-Sortierung zwischen Permutationen entscheiden. Um die zu erreichenmöglichen Permutationen ist es notwendig, dass .n ! m 2 m n ! m ≥ log ( n ! ) = Θ ( n log n )Θ(nlogn)n!m2mn!m≥log(n!)=Θ(nlogn)
Eine Annahme im Beweis, die ich oben nicht geschrieben habe, ist, dass der Algorithmus in dem Fall funktionieren muss, in dem die Elemente verschieden sind. Wenn a priori bekannt ist, dass die Elemente nicht alle verschieden sind, ist die Anzahl der möglichen Permutationen geringer als das volle. Beim Sortieren von Bit-Zahlen ist es nur möglich, verschiedene Elemente zu haben , wenn ; In diesem Fall ist die Komplexität der Radix-Sortierung tatsächlich . Für größere Werte von muss es Kollisionen geben, was erklärt, wie eine Radix-Sortierung eine Komplexität haben kann, die kleiner als wenn .k n n ≤ 2 k Ω ( n log n ) n Θ ( n log n ) n > 2 kn!knn≤2kΩ(nlogn)nΘ(nlogn)n>2k