Метод пузырька, как уменьшить число полных циклов при сортировке? - QBasic
Формулировка задачи:
как можно доработать программу, чтобы уменьшилось кол-во полных циклов(проходов) при сортировке?
Листинг программы
- CLS
- DIM a(10)
- RANDOMIZE TIMER
- FOR n = 1 TO 10
- a(n) = INT(RND * 15)
- PRINT a(n);
- NEXT
- FOR m = 1 TO 9
- FOR n = 1 TO 9
- IF a(n) > a(n + 1) THEN SWAP a(n), a(n + 1)
- NEXT
- FOR i = 1 TO 10
- PRINT a(i);
- NEXT
- NEXT
- FOR n = 1 TO 10
- PRINT a(n);
- NEXT
Решение задачи: «Метод пузырька, как уменьшить число полных циклов при сортировке?»
textual
Листинг программы
- rem массив A(n)
- DO
- c=0
- FOR i=1 TO n-1
- IF A(i) > A(i+1) THEN
- SWAP A(i),A(i+1)
- c=c+1
- END IF
- NEXT i
- IF c=0 THEN EXIT DO '::: Если перестановок не было - массив отсортирован
- LOOP
Объяснение кода листинга программы
- Массив A(n)
- Цикл DO с ограничением на количество полных циклов (вероятно, 20)
- Переменная c инициализируется значением 0
- Цикл FOR i=1 TO n-1
- Если A(i) больше A(i+1), то происходит перестановка элементов A(i) и A(i+1)
- Значение переменной c увеличивается на 1
- Цикл FOR завершается
- Если переменная c равна 0, то цикл DO завершается (массив отсортирован)
- Цикл LOOP начинается заново с пункта 3
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д