Реализация алгоритма "Быстрая сортировка" на 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
- 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.
- Процесс повторяется для каждого подмассива, полученного в результате деления исходного массива на две части по опорному элементу.
- После сортировки массива выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д