Один из самых популярных методов сортировки — "пузырьковый" метод основан на том, что в процессе исполнения алгоритма более " легкие " элементы массива постепенно " всплывают ". Особенностью данного метода является сравнение не каждого элемента со всеми, а сравнение в парах соседних элементов. Алгоритм пузырьковой сортировки по убыванию состоит в последовательных просмотрах снизу вверх (от начала к концу) массива М. Если соседние элементы таковы, что выполняется условие, согласно которому элемент справа больше элемента слева, то выполняется обмен значениями этих элементов.
Приведём пример программы сортировки массива методом пузырька в QBASIC:
REM сортировка методом пузырька
CLS
INPUT "Введите размер массива"; razmer
razmer = razmer – 1
DIM Massiv(razmer)
PRINT "Введите числа в массив"
FOR i = 0 TO razmer
INPUT Massiv(i)
NEXT i
REM сортировка массива
DO
schetchik2 = schetchik
FOR i = 0 TO razmer - 1
IF Massiv(i) < Massiv(i + 1) THEN
buf = Massiv(i)
Massiv(i) = Massiv(i + 1)
Massiv(i + 1) = buf
schetchik = schetchik + 1
END IF
NEXT i
LOOP WHILE schetchik <> schetchik2
|
|
FOR i = 0 TO razmer
PRINT Massiv(i);
NEXT i
END
Описание работы программы:
В начале программы нам необходимо определить размер нашего массива, чтоб было выделено место в памяти для массива, и присвоим значение размера массива в переменную razmer. Затем объявим массив и выделим для него объём памяти при помощи процедуры DIM. В созданный массив нужно ввести значения с клавиатуры. Т.к. в массиве не одно, а несколько ячеек, куда записывается информация, то будем использовать операторы цикла с известным числом повторений FOR, TO для повтора одинаковых манипуляций.
Сортировка массива осуществляется в двух циклах вложенных один в другой. Внутренний цикл позволяет сравнивать соседние элементы массива и менять их местами, если выполняется условие: первый меньше второго, иодновременно значение переменной schetchik увеличивается на 1. Внешний цикл проверяет произошли ли изменения в массиве во время проверки или нет – переменные schetchik и schetchik2. Работа циклов завершается если после сравнения элементов массива не произошло ни одного изменения.
В конце выводим содержимое отсортированного массива на экран.