Реализация алгоритма "Быстрая сортировка" на Quick Basic - QBasic
Формулировка задачи:
Доброго времени суток! Мне нужна реализация классического алгоритма "быстрая сортировка" на quick basic. Перерыл интеренет - есть на каких угодно языках но только не на этом.
Конкретизирую:
Отсортировать по возрастанию одномерный массив заполненный случайными целыми числами.
Заранее спасибо.
Решение задачи: «Реализация алгоритма "Быстрая сортировка" на Quick Basic»
textual
Листинг программы
DECLARE SUB SORT (LOW!, high!) CLS RANDOMIZE TIMER INPUT "Vvedite razmer massiva: ", razmer DIM SHARED y(razmer) PRINT "Ishodnij massiv:" FOR i = 1 TO razmer y(i) = INT(RND * 100) + 1 PRINT y(i); NEXT i PRINT i = 1 DO FOR j = 1 TO i SORT razmer / i * (j - 1), razmer / i * j NEXT j IF i > razmer THEN EXIT DO i = i * 2 LOOP PRINT "Otsortirovannij massiv:" FOR i = 1 TO razmer PRINT y(i); NEXT i SUB SORT (LOW, high) sr = INT((LOW + high) / 2) DO imax = LOW FOR i = LOW TO sr IF y(i) > y(imax) THEN imax = i NEXT i jmin = sr + 1 FOR j = sr + 1 TO high IF y(j) < y(jmin) THEN jmin = j NEXT j IF y(imax) > y(jmin) THEN SWAP y(imax), y(jmin) ELSE EXIT DO LOOP END SUB
Объяснение кода листинга программы
- Ввод размера массива.
- Создание массива и заполнение его случайными числами.
- Вывод на экран исходного массива.
- Запуск процедуры сортировки.
- Удвоение размера массива и повторный запуск процедуры сортировки до тех пор, пока размер массива не станет равным 1.
- Вывод на экран отсортированного массива.
- Подпрограмма сортировки использует метод
Быстрая сортировка
. - Подпрограмма сортировки рекурсивная и принимает в качестве параметров минимальный и максимальный индексы подмассива для сортировки.
- Выбор опорного элемента, для этого используется средний индекс подмассива.
- Нахождение индексов опорного элемента в подмассиве.
- Если найденные элементы меняются местами, значит, опорный элемент находится на своем месте, иначе он меняется местами с элементом, находящимся на позиции минимального индекса, и рекурсивно вызывается функция сортировки для подмассива с элементом на позиции минимального индекса в качестве опорного.
- Если найденные элементы не меняются местами, значит, опорный элемент находится на позиции максимального индекса, и рекурсивно вызывается функция сортировки для подмассива с элементом на позиции максимального индекса в качестве опорного.
- Процесс повторяется до тех пор, пока размер подмассива не станет равным 1.
- Процесс повторяется для каждого подмассива, полученного в результате деления исходного массива на две части по опорному элементу.
- После сортировки массива выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д