Произвести сортировку методом прямого выбора первого полученного массива по убыванию - Pascal
Формулировка задачи:
Заполнить массив из 20 элементов случайными числами от -10 до 5. Сформировать два массива, состоящие из первых 10 и последних 10 элементов исходного массива. Произвести сортировку методом прямого выбора первого полученного массива по убыванию, второго - по возрастанию.
Так же есть код, но нужно обозначить за что отвечает каждая строчка в сортировках первого и второго массива.
и расскажите пжлста в строах 38 и 54 почему мы пишем i+1 to 10 do
program l16v2;
var
a:array[1..20] of integer;
b,c:array[1..10] of integer;
i,j,k,t,i_2:integer;
begin
randomize;
writeln('ishodniy massiv');
for i:=1 to 20 do
begin
a[i]:=random(16)-10;
write (a[i],' ');
end;
writeln();
writeln('1 massiv');
for i:=1 to 10 do
begin
b[i]:=a[i];
write(b[i],' ');
end;
writeln;
writeln('2 massiv');
for i:=1 to 10 do
begin
c[i]:=a[i+10];
write(c[i],' ');
end;
writeln();
writeln('sortirovka 1 massiva');
for i:=1 to 9 do
begin
for k:=1 to 10 do
write(b[k],' ');
writeln();
i_2:=i;
for j:=i+1 to 10 do
if b[i_2] < b[j] then
i_2:=j;
t:=b[i];
b[i]:=b[i_2];
b[i_2]:=t;
end;
writeln();
writeln('sortirovka 2 massiva');
for i:=1 to 9 do
begin
for k:=1 to 10 do
write (c[k],' ');
writeln();
i_2:=i;
for j:=i+1 to 10 do
if c[i_2] > c[j] then
i_2:=j;
t:=c[i];
c[i]:=c[i_2];
c[i_2]:=t;
end;
writeln();
end.Решение задачи: «Произвести сортировку методом прямого выбора первого полученного массива по убыванию»
textual
Листинг программы
var
a: array [1..20] of Integer;
b, c: array [1..10] of Integer;
i, j, k, t: Integer;
begin
Randomize;
for j:=Low(a) to High(a) do a[j]:=-10+Random(16); {инициализация a}
for j:=Low(b) to High(b) do begin
b[j]:=a[j]; c[j]:=a[j+10]; {заполнение b и c}
end;
Write('A ='); for j:=Low(a) to High(a) do Write(' ',a[j]); WriteLn; {вывод}
Write('B ='); for j:=Low(b) to High(b) do Write(' ',b[j]); WriteLn; {вывод}
for i:=Low(b) to High(b)-1 do begin
k:=i; for j:=i+1 to High(b) do if b[j]<b[k] then k:=j; {индекс мин. в k}
t:=b[i]; b[i]:=b[k]; b[k]:=t; {обмен}
Write('':3); for j:=Low(b) to High(b) do Write(' ',b[j]); WriteLn; {вывод}
end;
Write('C ='); for j:=Low(c) to High(c) do Write(' ',c[j]); WriteLn; {вывод}
for i:=Low(c) to High(c)-1 do begin
k:=i; for j:=i+1 to High(c) do if c[j]>c[k] then k:=j; {индекс макс. в k}
t:=c[i]; c[i]:=c[k]; c[k]:=t; {обмен}
Write('':3); for j:=Low(c) to High(c) do Write(' ',c[j]); WriteLn; {вывод}
end;
end.
Объяснение кода листинга программы
- Объявляется массив
aразмером 20 элементов, массивыbиcразмером 10 элементов и переменныеi,j,k,tтипа Integer. - Генерируются случайные значения от -10 до 5 для каждого элемента массива
a. - Значения элементов массива
bзаполняются значениями из первой половины массиваa, значения элементов массиваcзаполняются значениями из второй половины массиваa. - Выводится на экран содержимое массива
aи массиваb. - Происходит сортировка массива
bметодом прямого выбора по возрастанию. - После каждой итерации сортировки выводится на экран текущее состояние массива
b. - Выводится на экран содержимое массива
c. - Происходит сортировка массива
cметодом прямого выбора по убыванию. - После каждой итерации сортировки выводится на экран текущее состояние массива
c.