Не работает сортировка методом выбора - Turbo Pascal
Формулировка задачи:
Укажите пожалуйста на ошибку. Пытался отсортировать массив методом выбора, но что-то идет не так
Решение задачи: «Не работает сортировка методом выбора»
textual
Листинг программы
program mv;
const
N = 10;
var
arr: array[1..N] of integer;
{var} {z,x,v,i,m: integer; //Что за Z X V M ?? Зачем 2 раза писать Var?}
i, j, x, ri: integer;//i,j - для циклов x - промежуточное значение для обмена
begin
writeln('Массив:');
for i := 1 to N do
begin
arr[i] := random(10);
write(arr[i]:3)
end;
for i := 1 to N do
begin
ri := i;
x := arr[i];
for j := i + 1 to N do { найти элемент с наименьшим значением }
if arr[j] < x then
begin
ri := j;
x := arr[j];
end;
arr[ri] := arr[i]; { обмен }
arr[i] := x;
end;
writeln;
writeln('Массив после сортировки:');
for i := 1 to N do
write(arr[i]:3);
end.
Объяснение кода листинга программы
В данном коде объявлены следующие переменные:
- arr — массив целых чисел от 1 до N.
- N — константа, равная 10.
- i, j, x, ri — переменные для циклов и промежуточных вычислений.
- random(10) — функция генерации случайного числа от 0 до 9 (включительно).
- write(arr[i]:3) — записывает значение элемента массива arr[i] в текущую строку.
- arr[ri] := arr[i] — обмен значениями элементов массива.
- x — временная переменная для хранения промежуточного значения при обмене. Код выполняет следующие действия:
- Выводит исходный массив.
- Для каждого элемента массива (от 1 до N):
- Генерирует случайное число и записывает его в массив.
- Находит элемент с наименьшим значением (сравнивая элементы массива от i+1 до N).
- Если найденный элемент меньше текущего, меняет их местами.
- Записывает текущий элемент в его окончательное положение.
- Выводит отсортированный массив.