![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MegBegb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 26.5.2005 Репутация: нет Всего: нет |
Помогите пожалуйста!!! Завтра отчитываться по этой сортировке, а сижу уже 4 час и никак не пойму как она работает!!! Взята из книги сортировок и никакого описания! Может кто поможет разобраться как она работает?? Выкладываю полную программу под Borland C 31
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Названия функциям явно давал какой-то умник - видимо, с целью запутать студентов.
Вот базовый код сортировки слиянием из Седжвика:
Здесь функция merge делает именно то, что в вашем примере называется sort. A mergesort - это, соответственно, ваша div. Тогда все становится на свои места. Сортировка выполняется путем деления массива a на 2 части, с их последующей сортировкой (рекурсивно) по отдельности, а потом - слиянием этих массивов. Подробнее нужно? -------------------- ... |
|||
|
||||
| MegBegb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 26.5.2005 Репутация: нет Всего: нет |
А это разве не обычное слияние... И вообще в чем разница между обычным и циклическим! Мне просто сегодня ее дали, а до этого я с такими сортировками и не встречался... И если можно поподробнее о процессе ее работы
Заранее благодарен |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Да, в общем, обычное. Честно говоря, термин "циклическое" я не знаю как понимать. Но судя по приведенному коду - обычная сортировка слиянием.
Как она работает. Ну, функция merge, которая у вас называется sort, просто сливает две половины исходного массива. В первом цикле исходный массив перекладывается в два вспомогательных под-массива. Кстати сказать, написано достаточно криво: какой смысл все время проверять, не стал ли индекс больше чем med. Логичнее уж написать 2 цикла - первая половина копируется в первый массив, вторая - во второй. Но это так, ворчание в скобках. Во втором цикле, эти два подмассива просматриваются параллельно, выбирается наименьший элемент и инкрементируется соответствующий индекс. Когда элементы в одном из массивов кончаются, все остальное берем их второго. Суть метода в том, что эти подмассивы ОТСОРТИРОВАНЫ. Именно поэтому в результате тоже получается отсортированный массив. А отсортированы подмассивы потому, что перед этим функция сортировки вызывается рекурсивно для каждого из них. Из всех книг, где описаны сортировки и алгоритмы вообще, мне больше всего нравится "Фундаментальные алгоритмы на С++" Р. Седжвика. Сортировкам посвящена часть 3. По-моему здесь, в разделе Литература есть ссылка на эту книгу в сети. Это сообщение отредактировал(а) Earnest - 23.6.2005, 19:05 -------------------- ... |
|||
|
||||
| MegBegb |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 26.5.2005 Репутация: нет Всего: нет |
Спасибо большое
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |