![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.03.2013
Сообщений: 79
|
![]()
Напишите рекурсивную программу для сортировки массива методом "пузырька".
Как сделать из простого кода пузырька рекурсивную программу? Как понимаю нужно запихать ее в какую-то функцию, но явно не просто так... Код:
Последний раз редактировалось Alexandr-; 29.10.2013 в 16:25. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 05.04.2012
Сообщений: 134
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 04.03.2013
Сообщений: 79
|
![]()
А в чем заключается рекурсия, ведь программа выполняется, как обычно?
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Код:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 04.03.2013
Сообщений: 79
|
![]()
Пытался разобраться, но так и не понял, что значат эти строки:
bool go = false; go = true; Помогите разобраться до конца. |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Как я понимаю:
После вызова функции, ее тело прежде всего проводит некую сортировку, судя по всему зупырьком. Обычно это делается двумя циклами, потому что по массиву нужно проводить проход несколько раз - такова механика пузырька (при сортировке перемещается только один элемент). В этом цикле, перемещающем этот элемент (не обязательно один и тот же - просто могут меняться соседние элементы) ставится флаг go, который изанчально сигнализирует о том что сортировка не нужна (bool go = false ![]() Однако если хотя бы один раз условие выполнится, это будет означать что некий элемент поменялся местами с соседом, и возможно (скорее всего) требуется его подальшее продвижение вверх. Не важно сколько таких элементов будет все равно этот флаг будет установлен в true при выявлении первого из таких элементов. Соответственно условие после цикла будет решать - был ли найден при сортировке хотя бы один такой элемент, который пришлось переставлять, и запустит эту же функцию еще раз, дабы она продолжила перестановку. Пока в массиве будут выявляться передвижения - функция будет запускать саму себя для сортировки. Как только такие передвижения закончатся функция многократно выйдет из самой себя и завершит работу вовсе. Это все наглядно может проиллюстрировать пошаговая отладка - там посмотришь как "всплывают" по телу массива сортируемые элементы.
I'm learning to live...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсивная программа вывода алфавита | kalosha-stepa | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.10.2012 21:51 |
Рекурсивная программа для вычисления функции | Чайник.ру | Помощь студентам | 1 | 08.06.2011 15:21 |
Рекурсивная программа на Паскале "количество чисел в строке" | Voldemort93 | Помощь студентам | 4 | 03.04.2011 14:53 |
Рекурсивная программа в Dephi:множество кантора | Katya_Pesec | Помощь студентам | 0 | 12.06.2010 21:11 |
Рекурсивная программа вычисления "Суммы" | Настёна-Liana | Помощь студентам | 2 | 29.05.2010 19:00 |