Метод простого выбора паскаль

Задача

Требуется отсортировать массив по возрастанию.

Решение

Для этого можно воспользоваться следующим алгоритмом.

  1. Найти максимальный элемент (max) в массиве (arr).
  2. Поместить его на последнее место (j).
  3. Элемент, находившийся в конце массива переместить на место, где прежде находился max.
  4. Уменьшить просматриваемую область массива на единицу (j – 1).
  5. Снова найти максимальный элемент в оставшейся области.
  6. Поместить его в конец просматриваемой области массива.
  7. и т.д.

Программа на языке Паскаль:

Присваивание длины массива переменной j не обязательно. Вместо j в цикле while можно было использовать само n. Однако в конце мы выводим на экран отсортированный массив, поэтому требуется сохранить исходное значение n.

Сортировка простым включением.
Пример 33. Методом простого включения упорядочить (отсортировать) в порядке возрастания массив из 8 целых чисел (44, 55,12,42, 94, 18, 06, 67).

Этот метод используют игроки в карты, перебирая все карты по очереди, начиная со второй и ставя ее на свое место по старшинству среди стоящих левее карт.

PROGRAM PR33;
CONST
X: ARRAY [1.. 8] OF INTEGER = (44, 55,12,42, 94,18,06, 67);
VAR
L, I, J: INTEGER;
BEGIN < Вывод на экран исходного массива X >
FOR I := 1 ТО 8 DO WRITE(X[I]:5);
WRITELN;
FOR I:=2 TO 8
DO BEGIN
J:= I-1; L:= X[I];
WHILE (J > 0) AND (L

Сортировка простым выбором.
Пример 34. Методом простого выбора упорядочить (отсортировать) в порядке возрастания массив из 8 целых чисел (44, 55,12,42, 94,18, 06, 67).
Этот метод более предпочтителен, чем сортировка простым включением. Концептуальная модель этого метода состоит в следующем. Начиная с первой позиции, просматриваются все N элементов и находится номер К наименьшего из элементов. Элемент К ставится на первое место. А элемент, стоявший на втором месте, перемещается на место К. На втором проходе I = 2 первый элемент уже не рассматривается. Рассматриваются оставшиеся N-1 элементы и среди них находится наименьший элемент, имеющий номер К. Этот элемент ставится на второе место, а элемент со второго места смещается на место К. Этот процесс продолжается до тех пор, пока не будет просмотрен весь массив X, содержащий N элементов.

Читайте также:  Майкрософт люмия 535 фото

PROGRAM PR34;
CONST
X: ARRAY [1.. 8] OF INTEGER = (44, 55,12,42,94, 18,06,67);
VAR
K,L, I, J: INTEGER;
BEGIN < Вывод на экран исходного массива X >
FOR I := 1 ТО 8 DO WRITE(X[I]:5);
WRITELN;
FOR I := 1 TO 7
DO BEGIN
K:= I;
FOR J := I + 1 TO 8 < Поиск номера К наименьшего X[I]. Х[К]>
DO IF Х[J]

Из всех примеров нетрудно заметить одно существенное неудобство, связанное с использованием регулярных типов. Оно состоит в том, что необходимо сразу фиксировать число элементов массива. В отдельных случаях заранее не известна размерность массива, подлежащего обработке. Например, может возникнуть необходимость в одном случае отсортировать массив в 20 вещественных чисел, а в другом 100. Поэтому в программу приходится вносить исправления. Профессиональная диагностика жесткого диска от опытных мастеров, также Вы можете заказать услугу восстановления данных. Здесь помогает понятие константы, описанной в разделе CONST. Достаточно заменить описание N = 20 на N = 30, или N = 100 и больше никаких исправлений в программе не потребуется. Либо использовать переменную N, значение которой вводится либо пользователем с клавиатуры, либо присваивается в программе.

Сортировка выбором – возможно, самый простой в реализации алгоритм сортировки. Как и в большинстве других подобных алгоритмов, в его основе лежит операция сравнения. Сравнивая каждый элемент с каждым, и в случае необходимости производя обмен, метод приводит последовательность к необходимому упорядоченному виду.

Идея алгоритма очень проста. Пусть имеется массив A размером N, тогда сортировка выбором сводится к следующему:

  1. берем первый элемент последовательности A[i], здесь i – номер элемента, для первого i равен 1;
  2. находим минимальный (максимальный) элемент последовательности и запоминаем его номер в переменную key;
  3. если номер первого элемента и номер найденного элемента не совпадают, т. е. если key≠1, тогда два этих элемента обмениваются значениями, иначе никаких манипуляций не происходит;
  4. увеличиваем i на 1 и продолжаем сортировку оставшейся части массива, а именно с элемента с номером 2 по N, так как элемент A[1] уже занимает свою позицию;
Читайте также:  Момент инерции тонкостенного цилиндра вывод формулы

С каждым последующим шагом размер подмассива, с которым работает алгоритм, уменьшается на 1, но на способ сортировки это не влияет, он одинаков для каждого шага.

Рассмотрим работу алгоритма на примере конкретной последовательности целых чисел. Дан массив, состоящий из пяти целых чисел 9, 1, 4, 7, 5 (см. рис.). Требуется расположить его элементы по возрастанию, используя сортировку выбором. Начнем по порядку сравнивать элементы. Второй элемент меньше первого – запоминаем это (key=2).

Далее мы видим, что он также меньше и всех остальных, а так как key≠1, меняем местами первый и второй элементы. Продолжим упорядочивание оставшейся части, пытаясь найти замену элементу со значением 9. Теперь в key будет занесена 3-ка, поскольку элемент с номером 3 имеет наименьшее значение. Как видно, key≠2, следовательно, меняем местами 2-ой и 3-ий элементы. Продолжаем расставлять на места элементы, пока на очередном шаге размер поддмассива не станет равным 1-ому.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector