Array114. Дан массив $$A$$ размера $$N$$ ( $$\leq 6$$ ).Упорядочить его по возрастанию методом сортировки простыми вставками: сравнить элементы $$A_1$$ и $$A_2$$ и, при необходимости меняя их местами, добиться того, чтобы они оказались упорядоченными по возрастанию; затем обратиться к элементу $$A_3$$ и переместить его в левую (уже упорядоченную) часть массива, сохранив ее упорядоченность; повторить этот процесс для остальных элементов, выводя содержимое массива после обработки каждого элемента (от $$2$$-го до $$N$$-го). При выполнении описанных действий удобно использовать прием «барьера», записывая очередной элемент перед его обработкой в дополнительный элемент массива $$A_0$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
program Array114; var a : array [0..6] of real; N,i,i2,i3: integer; begin Write('N: '); Readln(N); Writeln('A: '); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; if a[1] > a[2] then begin a[1]:=a[1]+a[2]; a[2]:=a[1]-a[2]; a[1]:=a[1]-a[2]; end; for i:=3 to N do begin a[0]:=a[i]; for i2:=i-1 downto 0 do if a[0]<a[i2] then a[i2+1]:=a[i2] else begin a[i2+1]:=a[0]; break; end; for i3:=1 to N do writeln(i3,':',a[i3]:7:0); writeln; end; end. |
Задачи из раздела Array можно посмотреть здесь.
Комментарии:
Комментарии 1