Логин:    Пароль:        Регистрация  |  Забыли пароль?   



Дан массив a[1..n] и число b

Дата: 25 ноября 2008  | Разместил: admin | Просмотров: 104 | Раздел: Программирование, Pascal 

Дан массив 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;


Добавление комментария





Включите эту картинку для отображения кода безопасности
обновить код