![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| kostyaizznu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 30.10.2008 Где: Запорожье Репутация: нет Всего: нет |
я запрограммировал алгоритм пирамидальной сортировки. Алгоритм на 100% верен, т.к он из надёжного источника, алгоритм оформил в процедуру. Но при выполнении выскакивает "Stack is overflow error"
Что делать???
Добавлено @ 19:39 Вот Алгоритм Выражение [[ x ]] значит что берём нижнюю целую часть от х. Алгоритм Н. (Пирамидальная сортировка.) Записи R1, ..., RN переразмещаются на том же месте; после завершения сортировки их ключи будут упорядочены: K1 ≤ ... ≤ KN. Сначала файл перестраивается в пирамиду, после чего вершина пирамиды многократно исключается и записывается на свое окончательное место. Предполагается, что N ≥ 2. H1. [Начальная установка.] Установить l ← [[N/ 2]]+ 1, r!N. Н2. [Уменьшить l или r.] Если l > 1, то установить l ! l-1, R ! Rl, K ! Kl (Если l >1, это означает, что происходит процесс преобразования исходного файла в пирамиду; если же l = 1, то это значит, что ключи K1, K2, ..., Kr уже образуют пирамиду.) В противном случае установить R ! Rr, K ! Kr, Rr ! R1, r! r - 1; если в результате оказалось, что r = 1, то установить R1 ! R и завершить работу алгоритма. Н3. [Приготовиться к "протаскиванию".] Установить j ! l. (К этому моменту j j K ≥ K / 2 при l < [[j / 2]] < j ≤ r , (4) а записи Rk, r < k ≤ N, занимают свои окончательные места. Шаги Н3 Н8 называются алгоритмом "протаскивания"; их действие эквивалентно установке Rl ! R с последующим перемещением записей Rl, ..., Rr таким образом, чтобы условие (4) выполнялось и при [[j / 2]] = l .) Н4. [Продвинуться вниз.] Установить i ! j и j ← 2j. (В последующих шагах i = [[j / 2]].) Если j < r, то перейти к шагу Н5; .если j = r, то перейти к шагу Н6; если же j > r, то перейти к шагу Н8. Н5. [Найти "большего" сына.] Если Kj < Kj+1, то установить j ← j+1. Н6. [Больше K?] Если К ≥ Кj, то перейти к шагу Н8. Н7. [Поднять его вверх.] Установить Ri ← Rj и возвратиться к шагу Н4. Н8. [Занести R.] Установить Ri ← R. (На этом алгоритм "протаскивания", начатый в шаге НЗ, заканчивается.) Возвратиться к шагу Н2. Это сообщение отредактировал(а) kostyaizznu - 25.12.2008, 19:40 |
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
о_О вот твой единомышленник, с точно таким же кодом!!!
http://forum.vingrad.ru/forum/topic-241766.html |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Закрыть... Все вопросы - в той теме...
|
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |