- •Как написать простейшую программу
- •1. Описание переменной файлового типа
- •2. Связь переменной файлового типа с конкретным внешним файлом.
- •3. Чтение из файла
- •4. Закрытие файла
- •5. Признак конца файла
- •6. Запись в файл
- •Логическая функция Eoln()
- •Описание данных логического типа
- •Логические операции
- •Стандартные логические функции
- •Решение задач
- •Окно редактора кода
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Оператор цикла с предусловием while
- •Оператор цикла с постусловием repeat
- •Решение
- •Параметры процедур и функций
- •Передача параметров
- •Глобальные и локальные переменные
- •Вызов процедуры
- •Вызов функции
- •Операции для данных символьного типа
- •Функции для данных символьного типа
- •Перечисляемый тип
- •Набор операций
- •Стандартные функции
- •Интервальный тип (диапазон)
- •Описание массива
- •Особенность языка Паскаль
- •Заполнение одномерного массива значениями
- •Вывод значений элементов массива на экран
- •Изменение значений некоторых элементов
- •Заполнение массива по заданному правилу
- •Работа с несколькими массивами
- •Вставка одного элемента
- •Вставка нескольких элементов
- •Сортировка массива методом простого выбора
- •Сортировка массива методом простого обмена (методом пузырька)
Сортировка массива методом простого выбора
При сортировке массива методом выбора применяется базовый алгоритм поиска максимального (минимального) элемента и его номера.
Алгоритм сортировки массива методом выбора:
Для исходного массива выбрать максимальный элемент.
Поменять его местами с последним элементом (после этого самый большой элемент будет стоять на своем месте).
Повторить п.п. 1-2 с оставшимися n-1 элементами, то есть рассмотреть часть массива, начиная с первого элемента до предпоследнего, найти в нем максимальный элемент и поменять его местамис предпоследним (n-1)- м элементом массива, затем с оставшиеся (n-2)-мя элементами и так далее, пока не останется один элемент, уже стоящий на своем месте.
Для упорядочения массива потребуется (n-1) просмотров массива. В процессе сортировки будет увеличиваться отсортированная часть массива, а неотсортированная, соответственно, уменьшаться.
При сортировке данных выполняется обмен содержимого переменных. Для обмена необходимо создавать временную переменную, в которой будет храниться содержимое одной из переменных. В противном случае ее содержимое окажется утерянным.
Задача 1. Массив из 10 элементов отсортировать по возрастанию методом простого перебора.
Решение
Напишем процедуру. Входным параметром для неё будет массив. Он же будет и выходным параметром. Поэтому описываем его как параметр-переменная (с ключевым словом var).
В процедуре внешний цикл по i - определяет длину рассматриваемой части массива. Она будет изменяться от n до 2.
Внутренний цикл по j используется для поиска максимального элемента и его номера. В качестве начального значения максимума разумно взять значение последнего элемента рассматриваемой части массива.
Программный код процедуры:
Procedure sorting1(var a:myarray); {Сортировка по возрастанию методом простого выбора} var i,j:integer; k,m:integer; {номер и значение максимального элемента} begin for i:= n downto 2 do{задаем длину рассматриваемой части массива} begin {ищем максимальный элемент и его номер} k:=i; m:=a[i]; for j:= 1 to i-1 do if a[j] > m then begin k:=j; m:=a[k] end; {меняем местами найденный элемент и последний} if k <> i then begin a[k]:=a[i]; a[i]:= m; end; end; end; end; |
Программный код основной программы:
program primer_1; const n = 10; type myarray = array[1..n] of integer; var a:myarray; Procedure sorting1(var a:myarray); {Линейная сортировка (сортировка отбором)} ... begin {main} writeln('Введите исходный массив:'); for i:=1 to n do read(a[i]); sorting1(a); writeln('Отсортированный массив:'); for i:=1 to 10 do write(a[i],' '); writeln; end. |
Процесс упорядочения элементов в массиве по возрастанию методом отбора:
Номер элемента |
1 |
2 |
3 |
4 |
5 |
Исходный массив |
8 |
7 |
5 |
4 |
2 |
Первый просмотр |
2 |
7 |
5 |
4 |
8 |
Второй просмотр |
2 |
4 |
5 |
7 |
8 |
Третий просмотр |
2 |
4 |
5 |
7 |
8 |
Четвертый просмотр |
2 |
4 |
5 |
7 |
8 |
При упорядочивании массива по убыванию необходимо перемещать минимальный элемент. Для чего в алгоритме нахождения максимального элемента достаточно знак ">" поменять на знак "<".