优化举例 /B1 1)i:=m-1 快速排序程序片段如下, (2)j:=n i=m-1;j=n; v=an (3)t1:=4*n while (1)i (4)V:=at11 do i=i+1; while(ad<v) do j=j-1, while(an>v) if(i>=j break X=可:可=a:a[=x Xea0; aj=an]; an=X
•优化举例 快速排序程序片段如下, i = m − 1; j = n; v = a[n]; while (1) { do i = i +1; while(a[i]<v); do j =j −1;while (a[j]>v); if (i >= j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; //B1 (1) i := m −1 (2) j := n (3) t1 := 4 * n (4) v := a[t1]
优化举例 /1B2 快速排序程序片段如下, (5)i:=i+1 (6)t2:=4*i i=m-1; j =n; v=an; while (1)i (7)t3:=at2] do i=i+1, while(ali<v); (8)if t3< v goto (5) doj于j-1;whie(a>V); if(i>=j break X可;a]=a[j;a]=x X可;a]=an;a[n]=x
•优化举例 快速排序程序片段如下, i = m − 1; j = n; v = a[n]; while (1) { do i = i +1; while(a[i]<v); do j =j −1;while (a[j]>v); if (i >= j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; //B2 (5) i := i + 1 (6) t2 := 4 * i (7) t3 := a[t2] (8) if t3 < v goto (5)
优化举例 快速排序程序片段如下, /1B3 i=m-1; j=n; v=a[n] (9)j:=j-1 while (1)i 10)4:=4*j do i=i+1; while(ad<v) (11)t5:=at4 doj可j-1; while(aj>v (12)if t5 >v goto(9) if(i>=j break X可;a]=a[j;a]=x X可;a]=an;a[n]=x
•优化举例 快速排序程序片段如下, i = m − 1; j = n; v = a[n]; while (1) { do i = i +1; while(a[i]<v); do j =j −1;while (a[j]>v); if (i >= j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; //B3 (9) j := j −1 (10) t4 := 4 * j (11) t5 := a[t4] (12) if t5 > v goto (9)
优化举例 快速排序程序片段如下, 1=m-1;j=n;V=a[n]; while (1)i do i=i+1; while(ad<v) /1B4 doj于j-1;whie(a]>V) (13)if i >=i goto(23) if(i>=j)break, X可;a]=a[j;a]=x X可;a]=an;a[n]=x
•优化举例 快速排序程序片段如下, i = m − 1; j = n; v = a[n]; while (1) { do i = i +1; while(a[i]<v); do j =j −1;while (a[j]>v); if (i >= j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; //B4 (13) if i >= j goto (23)
优化举例 1B5 快速排序程序片段如下, (14)t6:=4*i 1=m-1;j=n;V=a[n]; (15)X:=a[t6 while (1)i 16)t7:=4*i do i=i+1; while(ad<v) (17)t8:=4*j (18)t9:=a8 doj于j-1;whie(a>V); (19)a[t7]:=t9 if(i>=j break (20)t10:=4* (21)at10 XFa, al=all, alj=x, (22)goto(5) X可;a]=an;a[n]=x
•优化举例 快速排序程序片段如下, i = m − 1; j = n; v = a[n]; while (1) { do i = i +1; while(a[i]<v); do j =j −1;while (a[j]>v); if (i >= j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; //B5 (14) t6 := 4 * i (15) x := a[t6] (16) t7 := 4 * i (17) t8 := 4 * j (18) t9 := a[t8] (19) a[t7] := t9 (20) t10 := 4 * j (21) a[t10] := x (22) goto (5)