Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Turbo Pascal [12].pdf
Скачиваний:
128
Добавлен:
02.05.2014
Размер:
1.06 Mб
Скачать

Одесский колледж компьютерных технологий “СЕРВЕР”

элемент массива, второе - наименьший из всех остальных, третье - наименьший из оставшихся и т.д. Для этого необходимо выполнить следующую последовательность действий:

1.Определить минимальный элемент массива;

2.Поменять его местами с первым элементом;

3. Определить минимальный элемент среди оставшихся; 4.Поменять его местами со вторым элементом и т.д.

Эта последовательность действий должна выполняться до тех пор, пока количество оставшихся элементов не будет равна 1.

Алгоритм пузырьковой сортировки

Алгоритм так называемой "пузырьковой" сортировки более оригинален и в большинстве случаев более эффективен. При использовании этого алгоритма весь массив просматривается несколько раз подряд. При каждом таком просмотре сравниваются последовательно только соседние элементы массива: сначала первый со вторым, потом второй с третьим, и в конце предпоследний с последним. Если при сравнении окажется, что предыдущий элемент больше следующего, они меняются местами. Так в результате одного последовательного просмотра элементы, значение которых больше, чем у соседей, "всплывают" на 1 элемент выше, образно говоря ближе к поверхности, т.е. ближе к концу массива. Если провести такой последовательный просмотр массива несколько раз, то "тяжёлые" элементы окончательно "всплывут" и массив окажется отсортированным. Остаётся нерешённым ещё один вопрос. Сколько раз необходимо выполнять такой просмотр? Ведь может оказаться, что и одного просмотра будет достаточно. Ответстолько, сколько нужно для полной сортировки, т.е. пока при полном просмотре от начала до конца массива ни одна пара элементов не поменяются местами. Для этого удобно организовать логическую переменную, которой в начале присваивается True, а затем присваивать ей значение ложь в случае, если замена происходила хотя бы один раз. Если значением этой переменной останется истина, то просмотры необходимо прекратить. Вот пример программы такой сортировки для массива из пяти элементов:

repeat flag:=true;

for i:=l to 5 do

if Mas[ i]>Mas[ i+1] then begin

p:=Mas[ i ];

Mas[ i ]:=Mas[ i+l]; Mas[ i+l]:=p; Flag:=false;

43