типов в отсортированном
типов в отсортированном массиве. Определим индексы: i - изменяется от 1 до N1 (по ключам первого типа); l - от N1 до N1+N2 (по ключам второго типа); j - от N3 (общее количество ключей) до N1+N2+1. Тогда сортировка выполняется с помощью единственного цикла:
i=1;l:=N1+1;j:=N3;
while (i<=N1) or (l<j) do
Будем запоминать перестановки элементов массива A в массиве P. Нам потребуется следующая процедура:
procedure Change(v,w:integer;c1,c2:char);
begin
inc(cnt);P[cnt,1]:=v;P[cnt,2]:=w;A[v]:=c1;A[w]:=c2;
end;
Анализ блока «изменения индексов и перестановки ключей» приведен в таблице.
i l j Действие
A[i]=ch1 - - inc(i)
- A[l]=ch2 - inc(l)
- - A[j]=ch3 dec(j)
A[i]=ch2 A[l]=ch1 - Change(i,l,ch1,ch2)
A[i]=ch2 A[l]=ch3 A[j]=ch1 Change(i,j,ch1,ch2)
Change(l,j,ch2,ch3)
A[i]=ch2 A[l]=ch3 A[j]=ch2 Change(l,j,ch2,ch3)
A[i]=ch3 - A[j]=ch1 Change(i,j,ch1,ch3)
A[i]=ch3 A[l]=ch1 A[j]=ch2 Change(l,j,ch2,ch1)
Change(i,j,ch1,ch3)
A[i]=ch3 A[l]=ch3 A[j]=cch2 Change(l,j,ch2,ch3)
r97_2
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа