Сортировка методом пузырька в Паскале
Представим, что необходимо написать программу для работы с большим количеством переменных. Например, нужно 1000 переменных с типом integer, объявлять что-ли 1000 переменных? Такой подход очень эффективен, так как займет кучу времени. Поэтому в программировании есть структуры данных, которые являются огромными шкафами с шуфлядами, и каждая из них является своего рода переменной, внутри которой лежит значение.
В программировании такой шкаф называют массив. В нём находятся шуфлядки, которые называются ячейками, причем тип данных у всего массива один. Для хранения массива нужна одна переменная. Для использования ячейки в ходе программы нужно указать её порядковый номер. Но стоит также понимать, что номер ячейки и её значение это абсолютно разные вещи, адрес ячейки нужен лишь для обращения к ней, но не для использования непосредственно в самой программе.
И так, массив состоит из ячеек (шуфлядок). Но их нужно нужно как-то нумеровать, поэтому обычно в нумерации используют целые числа, кстати, не всегда нумерация идет по порядку. Сам адрес элемента называют индексом.
Также запомните, что элементы массива строго одного и того же типа, если массив типа integer, то в ячейках находятся целые числа, а если тип string, то в элементах исключительно текст.
Также массивы можно индексировать константами, либо переменными.
Есть несколько способов создать массив:
…
const n = 200;
type
months = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);
years = 1900..2100;
people = array[years] of longint;
var
growth: array[months] of real;
hum: people;
notes: array[1..n] of string;
Чтобы обратиться к определенной ячейке массива нужно указать его название (имя переменной, к которой привязан массив) и в квадратных скобках указать индекс.
Простые массивы называются одномерными. У них линейная структура:
var ch: array [1..11] of char;
h: char;
i: integer;begin
for i := 1 to 11 do read (ch[i]);for i := 1 to 11 do write (ch[i]:3);
readln
end.
В данной части кода массиву выдают 11 ячеек. Сам массив имеет тип char, поэтому и данные в нём имеют этот тип. Программа считывает 11 символов, которые введет пользователь, а потом, во втором цикле for, выводит их на экран. Переменная i обозначает индекс массива и имеет тип integer.
Сортировка массива
Иногда в работе с массивами нужно упорядочивать данные по возрастанию, либо по убыванию. Есть много способов это сделать, но ниже будет разобран метод сортировки пузырьком, так как он, и эффективен, и довольно прост в понимании.
Метод пузырька заключается в том, что более легкие элементы (пузырьки) находятся в начале массива, а более сложные в конце.
Суть метода
Суть данного метода заключается в том, что элементы каждые 2 элемента сравниваются попарно. И если элемент больше, то он отходит назад. И так происходит до конца массива. В итоге получается, что в конце расположится самый большой элемент.
Но, понятное дело, одного сравнения не хватит, поэтому нужно запустить несколько таких циклов, но с небольшим условием, так как последнее содержимое ячейки сравнивать не нужно, то просто отнимаем от количества сравнений в цикле, и последний объект не будет затронут.
const
m = 10;var
arr: array[1..m] of integer;
i, j, k: integer;begin
randomize;write (‘Исходный массив: ‘);
for i := 1 to m do begin
arr[i] := random(256);
write (arr[i]:4);
end;
writeln; writeln;for i := 1 to m-1 do
for j := 1 to m-i do
if arr[j] > arr[j+1] then begin
k := arr[j];
arr[j] := arr[j+1];
arr[j+1] := k
end;write (‘Отсортированный массив: ‘);
for i := 1 to m do
write (arr[i]:4);writeln;
readln
end.