Реализация алгоритма "Быстрая сортировка" на 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. Ввод размера массива.
  2. Создание массива и заполнение его случайными числами.
  3. Вывод на экран исходного массива.
  4. Запуск процедуры сортировки.
  5. Удвоение размера массива и повторный запуск процедуры сортировки до тех пор, пока размер массива не станет равным 1.
  6. Вывод на экран отсортированного массива.
  7. Подпрограмма сортировки использует метод Быстрая сортировка.
  8. Подпрограмма сортировки рекурсивная и принимает в качестве параметров минимальный и максимальный индексы подмассива для сортировки.
  9. Выбор опорного элемента, для этого используется средний индекс подмассива.
  10. Нахождение индексов опорного элемента в подмассиве.
  11. Если найденные элементы меняются местами, значит, опорный элемент находится на своем месте, иначе он меняется местами с элементом, находящимся на позиции минимального индекса, и рекурсивно вызывается функция сортировки для подмассива с элементом на позиции минимального индекса в качестве опорного.
  12. Если найденные элементы не меняются местами, значит, опорный элемент находится на позиции максимального индекса, и рекурсивно вызывается функция сортировки для подмассива с элементом на позиции максимального индекса в качестве опорного.
  13. Процесс повторяется до тех пор, пока размер подмассива не станет равным 1.
  14. Процесс повторяется для каждого подмассива, полученного в результате деления исходного массива на две части по опорному элементу.
  15. После сортировки массива выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5