Помогите откомпилировать программу. Почему-то не выводит отсортированный массив.
| Код | Program _3_4; uses crt; Type massiv = array [1..15] of integer; var i0,j0,i,j,si,sj,k,ke,m,t:integer; a: massiv; begin clrscr; Writeln (' Cортировка по парныим слиянием'); Writeln; for i := 1 to 15 do a[i]:= random(15); Writeln ('Массив случайных чисел:'); for i:=1 to 15 do write (a[i]:3); {заполнение массива случайными числами} Writeln; Writeln;
begin {сортировка по парным слиянием} si:=1; {начальный размер одного множества} while si<15 do {цикл, пока одно множество не составит весь массив} begin i0:=1; {начальный индекс 1-ого множества пары} while i0<15 do {цикл, пока не пересмотрим весь массив} begin j0:=i0+si; {начальный индекс 2-ого множества пары} i:=i0; j:=j0; {размер 2-ого множества пары может ограничиваться концом массива} if si>15-j0+1 then sj:=15-j0+1 else sj:=si; if sj>0 then begin k:=i0; {начальный индекс слитого множества} while (i<i0+si+sj) and (j<j0+sj) do {цикл, пока не исчерпаются оба входные множества} begin if a[i]>a[j] then {если элемент 1-ого <= элемента 2-ого, он остается на своём месте, но выходное множество расширяется иначе - освобождается место в выходном множестве и туда заносится элемент второго множества} begin t:=a[j]; for m:=j-1 downto k do a[m+1]:=a[m]; a[k]:=t; j:=j+1; {к следуещиму элементу во 2-м множестве} end; { if a[i] > a[j] } k:=k+1; {выходное множество увеличелось} i:=i+1; {если был перенос - за счет сдвига, если не было - за счет перехода элемента в выходное множество} end; {while} end; {if sj>0} i0:=i0+si*2; {начало следующей пары} end; {while i0<15} si:=si*2; {размер элементов пары увеличивается вдвое} end; {while si<15} end; for i:=1 to 15 do write (a[i]:3); Writeln (a[j]); readln; end.
|
Заранее благодарен! |