далее порознь. Как
далее порознь.
Как с помощью имеющегося контекста управлять разделением? В Уроке E4, при обработке кольцевого буфера, мы прибегли к введению фиктивной компоненты, которую назвали барьером, показывая тем самым, что через него нельзя перейти. В механизме разделения подмассива нет нужды создавать фиктивную компоненту, напротив, удобно выбрать на роль барьера какой-нибудь из элементов, имеющихся в нем.
Существует несколько способов выбрать такой элемент и организовать переключение между левым и правым индексами, участвующими в процедуре просмотра подмассива и организации обменов. Вот один из них:
Алгоритм E6-2
type
index1 = 0..N-1; {N > 1}
massive1 = array [index1] of item;
function Max (Mas: massive1; left, right: index1): item;
var i: index1; temp: item;
begin
temp:= Mas[left];
for i:= left+1 to right do
if Mas[i] > temp then temp := Mas[i];
Max := temp
end;
procedure ShiftRightArray (var Mas: massive1; ind: index1);
{сдвиг значений вправо, начиная
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа