procedure Shell(var a: Mas; n: integer); { сортировка методом Шелла } var i, j, step, t: integer;
begin step := n div 2; while step > 0 do begin for j := n - step downto 1 do begin i := j; while i <= n - step do begin if a[i] > a[i + step] then begin t := a[i]; a[i] := a[i + 1]; a[i + 1] := t end; i := i + step end end; step := step div 2 end end;
var x: Mas; i, n: integer;
begin Randomize; Write('Введите число элементов в массиве (1-100): '); Readln(n); Writeln('Исходный массив'); for i := 1 to n do begin x[i] := Random(101) - 50; Write(x[i]:4) end; Shell(x, n); Writeln(#13#10, 'Отсортированный массив'); for i := 1 to n do Write(x[i]:4) end.