Отсортировать массив по неубыванию методом "выбор максимума" - Pascal

Узнай цену своей работы

Формулировка задачи:

Требуется отсортировать массив по неубыванию методом "выбор максимума". ВХОДНЫЕ ДАННЫЕ В первой строке вводится одно натуральное число, не превосходящее 1000 — размер массива. Во второй строке задаются N чисел — элементы массива (целые числа, не превосходящие по модулю 1000). ВЫХОДНЫЕ ДАННЫЕ Вывести получившийся массив. ПРИМЕРЫ ВВОД ВЫВОД 2 3 1 1 3

Решение задачи: «Отсортировать массив по неубыванию методом "выбор максимума"»

textual
Листинг программы
var a:array[1..1000] of integer;
    n,m,i,j,k,jmx,x:integer;
begin
read(n);
for i:=1 to n do
read(a[i]);
m:=0;{количество отсортированных}
i:=1;{начало массива}
while i<n do {пока не конец - 1 }
 begin
  jmx:=1; {пусть это пока индекс максимума}
  for j:=1 to n-m do{с начала до уже выставленного на место максимума}
  if a[j]>a[jmx] then jmx:=j;{находим индекс самого макс.}
  x:=a[jmx];{запомним значение}
  for k:=jmx to n-m-1 do {сдвинем на него все не отсортированные элементы}
  a[k]:=a[k+1];
  a[n-m]:=x;{вставим очередной максимум на место}
  m:=m+1; {увеличим количество отсортированных}
  i:=i+1; {идем вперед}
 end;
for i:=1 to n do
write(a[i]:4);
end.

Объяснение кода листинга программы

  1. Создается переменная a типа array[1..1000] of integer;, которая будет представлять собой массив целых чисел.
  2. Затем определяются следующие переменные: n, m, i, j, k, jmx и x. Переменная n будет использоваться для чтения количества элементов в массиве, а переменные m, i, j, k и jmx будут использоваться для сортировки массива. Переменная x будет использоваться для хранения значения максимального элемента.
  3. Далее происходит чтение значений из массива a и сохранение их в соответствующих переменных.
  4. Затем устанавливается начальное значение переменной m равным 0, так как на данный момент еще не было найдено максимальное значение.
  5. Затем начинается цикл while, который будет выполняться до тех пор, пока не будет достигнут конец массива (т.е. i станет больше n). Внутри цикла while устанавливается начальное значение переменной jmx равным 1, так как это будет первый элемент, который будет рассматриваться как возможный максимальный элемент.
  6. Далее идет цикл for, который выполняется от 1 до n-m, где n-m - это количество элементов, которые уже были отсортированы. Внутри цикла for проверяется условие if a[j] > a[jmx] then jmx := j, т.е. если текущий элемент a[j] больше текущего максимального элемента a[jmx], то jmx обновляется на значение j. Таким образом, на каждом шаге цикла jmx будет указывать на текущий максимальный элемент.
  7. После того, как был найден новый максимальный элемент, его значение сохраняется в переменной x.
  8. Затем происходит сдвиг всех элементов массива, которые не были отсортированы, на один шаг влево, чтобы создать место для нового максимального элемента. Это делается путем присваивания значения a[k] значения a[k+1].
  9. После завершения цикла for значение переменной m увеличивается на 1, так как был добавлен еще один отсортированный элемент.
  10. Затем цикл while повторяется снова, начиная с шага 3.
  11. После завершения цикла while происходит вывод значений массива a с помощью функции write.
  12. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы