| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Алгоритм Хоара? |
| Автор: Mpak 17.12.2006, 18:26 |
| В результате выполнения алгоритма массив делится на два массива, которые сортируются этим же методом и снова делятся на два массива и так далее пока не разделится на части, в которых меньше 9 элементов. Как организовать это ветвление(разбиение)? Посоветовали работать со стеком. Что это(стек) такое? И какие функции используются? И если кто знает, что такое "Способ простой вставки" (тоже метод сортировки массива)? |
| Автор: Anark1 17.12.2006, 18:32 |
| Писал 2 метода сортировки на паскале. Стэк это работа с памятью по принципу - "первый вошел - последний вышел". Хоара хорошо писать с помощью рекурсии. Каждый раз вызывается по две рекурсии. Первая от первого элемента до разделителя. Вторая - от разделителя до последнего. И ветвление до тех пор пока не получишь n массивов , в каждом из которых 1 элемент. |
| Автор: Mpak 17.12.2006, 18:43 |
| Ок. Спасибо. Теперь что такое рекурсия? |
| Автор: GIK 17.12.2006, 19:10 | ||
Рекурсия-повторный вызов метода, при этом значения между вызовами хранятся в стеке.(по крайней мере так было в JS) Щас покумекаю над алгоритмом. |
| Автор: Anark1 17.12.2006, 20:04 |
| Пример рекурсии - подсчет двойки в степени N. В теле функции n происходит вызов n=(n-1) * 2. Если прокрутишь в отладичке то поймешь что сначала функция проходит сама себя, а потом начинает собирать значения. Как бы с конца. Это и есть стэк. Сори если немножко коряво объяснил. |
| Автор: GIK 17.12.2006, 20:52 | ||
| Mpak, вобщем тебе надо создать список из массивов. Кол-во массивов нужно как-то регулировать. Вобщем вот пример который просто урезает массив.
нужный вариант долго делать, но модера помогут, а я умываю руки да ксатати, размер массива (вектора) можно изменять, и вообще вектор класная вешь, но жрет память... Добавлено @ 20:59 Это конечно не алгоритм Хоара, но и уже не Хреново |
| Автор: Mpak 17.12.2006, 21:04 |
| хм.... спасибо всем Осталось дело за малым - разобратьтся в полученной информации.... |
| Автор: GIK 17.12.2006, 21:09 | ||
А чет тут разбиратся то Если че не понятно, спрашивай, тебе помогут |