Array115. Дан массив $$A$$ размера $$N$$. Не изменяя данный массив, вывести номера его элементов в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность. Использовать метод «пузырьковой» сортировки (см. задание Array112), модифицировав его следующим образом: создать вспомогательный целочисленный массив номеров $$I$$, заполнив его числами от $$1$$ до $$N$$; просматривать массив $$A$$, сравнивая пары элементов массива $$A$$ с номерами $$I_1$$ и $$I_2$$, $$I_2$$ и $$I_3$$, … и меняя местами соответствующие элементы массива $$I$$, если левый элемент пары больше правого. Повторив описанную процедуру просмотра $$N — 1$$ раз, получим в массиве I требуемую последовательность номеров.
Решение:
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 |
program Array115; var a : array [1..6] of real; i: array [1..6] of integer; N,N2,k,k2,k3: integer; begin Write('N: '); Readln(N); Writeln('A: '); for k:=1 to N do begin write(k,' :'); readln(a[k]); i[k]:=k; end; N2:=N; for k:=1 to N-1 do begin k2:=1; N2:=N2-1; while (k2<=N2) do begin if a[i[k2]] > a[i[k2]+1] then begin i[k2]:=i[k2]+i[k2+1]; i[k2+1]:=i[k2]-i[k2+1]; i[k2]:=i[k2]-i[k2+1]; end; inc(k2); end; for k3:=1 to N do writeln(i[k3]); readln; end; end. |
Задачи из раздела Array можно посмотреть здесь.
Комментарии:
Комментарии 1