Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1.  
  2. ArraySort(A,0,n-1) sortiert Array A der Länge n aufsteigend.\\
  3. IA: ($n=2$)\\
  4. ArraySort$(A,0,1)$ wird ausgeführt und $A[0]$ und $A[1]$ werden vertauscht falls diese an der falschen Position waren. Nun ist $A$ ist aufsteigend sortiert und unser Induktionsanfang gilt.\\
  5.  
  6. IV: ArraySort$(A,0,n-2)$ sortiert Array $A$ der Länge $n-1$ aufsteigend.\\
  7.  
  8. IS: ($n-1 \rightarrow n$)\\
  9. ArraySort$(A,0,n-1)$ wird ausgeführt. \\
  10. Fallunterscheidung:\\
  11. Fall 1 (n=1 oder n=2):\\
  12. Falls n=1, beihnaltet das Array nur ein Element und ist damit automatisch sortiert.
  13. Falls n=2, wird das Array $A$ laut IV korrekt sortiert.\\
  14. Fall 2 ($n>2$):\\
  15. Es wird $k=\lfloor \frac{j - i + 1}{3} \rfloor$ berechnet.\\
  16. Nun können wiederum folgende Fälle eintreten:\\
  17.  
  18. Fall 1: $(n=3, k=1$)\\
  19. ArraySort$(A,0,n-2)$ wird aufgerufen.\\
  20. Aus der IV folgt, dass die vorderen zwei Drittel nun aufsteigend sortiert sind. Alle Zahlen im zweiten Drittel sind also größer als diese im ersten Drittel.\\
  21. ArraySort$(A,1,n-1)$ wird aufgerufen.
  22. Es werden die letzten beiden Drittel sortiert. Da im zweiten Drittel bereits das größere Drittel an Zahlen war, können ohnehin nur solche aus dem zweiten Drittel überhaupt größer als 2/3 aller Zahlen sein und damit in den 3. Teil des Arrays sortiert werden. Somit wären nun im letzten Drittel alle größten Zahlen.
  23. Dass es tatsächlich sortiert ist, garantiert, dass ArraySort$(A,1,n-1)$ mit Indexverschiebung das Gleiche ist, wie ArraySort$(A',0,n-2)$, von dem wir wissen, dass es korrekt sortiert.\\
  24. ArraySort$(A,0,n-2)$ sortiert nun nochmal die ersten zwei Drittel. Da nun sowohl die ersten beiden Drittel, als auch das Letzte aufsteigend sortiert ist, ist ganz $A$ aufsteigend sortiert.\\\\
  25.  
  26. Fall 2: ($n=4,\ k=1$)\\
  27. ArraySort$(A,0,n-2)$ wird aufgerufen.\\
  28. Aus der IV folgt, dass die vorderen zwei Drittel nun aufsteigend sortiert sind. Alle Zahlen im zweiten Drittel sind also größer als diese im ersten Drittel.\\
  29. ArraySort$(A,1,3)$ wird aufgerufen und ist wie vorher gleich zu ArraySort$(A',0,2)$. Bei dieser Operation ist jedoch $n=3$ und $k=1$. Daraus folgt Fall 1. Es stehen nun wieder alle großen Elemente im letzten Drittel von $A$ und durch den letzten Durchlauf ArraySort$(A,0,n-2)$ ist $A$ aufsteigend sortiert.\\
  30.  
  31. Fall 3: ($n=5,\ k=1$)\\
  32. ArraySort$(A,0,n-2)$ ist wie in Fall 2 nach der Voraussetzung aufsteigend sortiert. ArraySort$(A,1,4)$ wird aufgerufen und ist gleich zu ArraySort$(A',0, 3)$. Da $n=4$ und $k=1$ gitl tritt wiederum Fall 2 ein. Die letzte Operation von ArraySort$(A,0,n-2)$ sortiert wieder das letzte Drittel welchse mit den größten Zahlen gefüllt war. $A$ ist somit aufsteigen sortiert.\\
  33.  
  34. Fall 4: ($n>5,\ k>1$)
  35. ArraySort$(A,0,n-1-k)$ bestimmt ein neues $k$ . Dieses ist nach dem Algorithmus jedoch kleiner als das vorherige und somit tritt einer der vorherigen Fälle ein, welcher die Teilarrays aufsteigend sortiert, oder Fall 4 selber tritt noch mal ein und es wir ein weiteres kleineres k bestimmt.
  36. Es kann also nur zu Fall 1-3 führen und damit ist $A$ wieder aufsteigen sortiert.
  37. % es UNUMGÄNGLICH UND UNWIEDERRUFBAR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement