Сортировка элементов массива - Pascal ABC (12702)
Формулировка задачи:
Объясните пожалуйста )) Задача: Заполнить массив из 10 чисел, переставить элементы от большего к меньшему.
Родилась такая программа:
const
n=10;
var
m: array [1..n] of integer;
b:integer;
c, i:byte;
begin
for i:=1 to n do
begin
m[i]:=random(100)-50;
write(m[i]:4)//вывод элементов массива на экран
end;
for i:=2 to n-1 do
for c:=1 to n-1 do
if m[c]<m[c+1] then
begin
b:= m[c]; m[c]:=m[c+1]; m[c+1]:=b;
end;
writeln;
for i:=1 to n do write(m[i]:4);
end.
Изначально во втором цикле было: for i:=1 to n-1. Но учитель написала, что количество проверок можно сократить. Поэтому интуитивно было переписано for i:=2 to n-1. А понять почему не могу (( Программа в обоих вариантах работает корректно.
Решение задачи: «Сортировка элементов массива»
textual
Листинг программы
var mas:array [1..100] of int64; N, i, o, g, j, p, y: int64; begin readln (o); for i:=1 to o do begin read(n); mas[i]:=n; end; for g:=1 to o-1 do for j:=1 to o-g do if mas[j]>mas[j+1] then begin p:=mas[j]; mas[j]:=mas[j+1]; mas[j+1]:=p; end; write(mas); end.
Объяснение кода листинга программы
В данном коде происходит сортировка элементов массива.
- Создается переменная
mas, которая представляет собой массив целых чисел размером от 1 до 100. - Задаются переменные
N,i,o,g,j,pиy, которые будут использоваться в цикле. - Выводится запрос на ввод числа
o, которое представляет собой количество элементов для сортировки. - В цикле for считывается число
nи присваивается элементу массиваmas[i]. - Повторно запускается цикл for, но уже с ограничением от 1 до
o-1. В этом цикле происходит сравнение элементов массиваmas[j]иmas[j+1]. - Если
mas[j]большеmas[j+1], то происходит обмен этих элементов:pприсваивается значениеmas[j],mas[j]присваивается значениеmas[j+1], аmas[j+1]присваивается значениеp. - После завершения внутреннего цикла выводится отсортированный массив
mas. Таким образом, данный код выполняет сортировку элементов массива в порядке возрастания.