Thema: Delphi Quicksort - theorie

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#12

AW: Quicksort - theorie

  Alt 15. Mai 2013, 00:47
Wenn man nur 2 Felder hat,

[4]-5

wobei 4 die Mitte ist. Hi springt, dann auf auf die A(Hi)(4), dadurch werden die Felder Lo und Hi getauscht und es geschieht Dec(hi) und Inc(lo) also A(Hi)(4) und A(Lo)(5). Damit uberlaufen sich Lo und Hi und das Programm endet die Arbeit, weil es nur je ein Feld gibt.
So in etwa. In dem Fall sind iLo=0 und iHi=1. Die erste while-Schleife läuft nicht, da A[Lo] = mid ist. Die zweite wird einmal durchlaufen. Danach sind Lo = 0 = Hi und die if-Bedingung schlägt zu, tauscht dabei aber nur A[0] mit A[0], was ja nichts ändert. Dann haben wir nach Inc(Lo) und Dec(Hi) Lo = 1 und Hi = -1. Das bringt die repeat-Schleife zum Abbruch und die rekursiven Aufrufe erfolgen auch nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat