Дан массив
a[1..n] и число b. Переставить
числа в массиве таким образом, чтобы слева от некоторой границы
стояли числа, меньшие или равные b, а справа от границы - большие
или
равные b.
Решение.
l:=0; r:=n;
{инвариант:
a[1]..a[l]<=b; a[r+1]..a[n]>=b}
while l <> r do begin
| if a[l+1] <= b then
begin
| | l:=l+1;
| end else if a[r] >=b then
begin
| | r:=r-1;
| end else begin {a[l+1]>b;
a[r]<b}
| | поменять a[l+1] и a[r]
| | l:=l+1; r:+r-1;
| end;
end;