| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Алгоритм] Ошибка в сортировке |
| Автор: lansel 16.7.2008, 16:08 | ||
Помогите, пожайлуста, разобраться...как сделать чтоб сортировались все элементы? Сейчас сортируется всё кроме первого :(
|
| Автор: HoTMetaL 16.7.2008, 21:51 |
| lansel, у меня к тебе несколько вопросов: 1) Чё это за алгоритм и где ты его взял? 2) Ты умеешь пользоваться трассировкой в Билдере? - если нет - читай учебники. 3) Ты не пробовал САМ ручками прогнать эту прогу на бумажке? Добавлено через 1 минуту и 57 секунд PS Написание кода ужасное! После каждой точки с запятой (;) переходи на новую строку. Добавлено через 2 минуты и 48 секунд И научись правильно использовать отступы. |
| Автор: lansel 17.7.2008, 09:17 | ||
1) Ну это длинная история....есть немецкий ученный который заниматься сортировками, вот в одной из его статей был взят алгоритм, немного улучшен...и дан мне... 2)Не общайся со мной как с маленьким мальчиком: а) я девушка!!! б) умею пользоваться трассировкой!!! 3) пробовала, и не только я! Ну зачем же так придираться к коду!! Код какой он есть и я его не выбирала Я же прошу помощи, а не критики. |
| Автор: HoTMetaL 17.7.2008, 09:50 |
Ну и где результаты? Если программа была прогнана ручками, то ошибка выявляется сразу. По опыту скажу - в различных алгоритмах обработки массивов косяки часто появляются из-за неправильного использования условий строго и нестрого неравенства (<,>,<=,>=), а так же не правильного условия выхода из цикла (до n, до n+1 ?) Можно словесное описание алгоритма? PS А я парень ;-) |
| Автор: lansel 17.7.2008, 10:05 | ||
Описания алгоритма, к сожелению, нет :( Все что есть это не рабочие реалиации на Билдере и Делфи :( |
| Автор: Rodman 17.7.2008, 10:14 | ||
сильно не вникал в код, но эти две строчки меня беспокоят... и второе: lansel сформулируй плиз задание... на мой взгляд в коде много лишнего (подозреваю что из-за неопытности)... но помочь возможно только при помощи нормально поставленной задачи...
|
| Автор: lansel 17.7.2008, 10:25 | ||
Эээ..если у меня преподаватель не опытен...но чему я тогда вообще учусь?! Задача поставлена, нужно чтоб сортировались правильно все элемены. Или вам нужнен точный алгоритм? |
| Автор: lansel 17.7.2008, 10:39 | ||
Массив одномернный. Это пирамидальная сортировка, возможно слабая. Массив рандомный должен быть, элементы будет доходить до миллиона. Куда будет выводиться, да без разницы...мне главное время за которое он отсортирует |
| Автор: Rodman 17.7.2008, 10:59 |
| Взял http://www.bib.com.ua/info1837.html судя по твоим пунктам - то что тебе надо (см. атач)! |
| Автор: lansel 17.7.2008, 16:26 | ||
Ну я так и думала, скажи вам алгоритм дадите что-то подобное готовое! Этого алгоритма готового нет в рунете!!! Точто вы прислали я с этим алгоритмом знакома |
| Автор: Rodman 17.7.2008, 16:30 |
| ну на сколько я понял, он устраивает всем твоим требованиям... |
| Автор: lansel 17.7.2008, 16:50 | ||
Да я понимаю....но мне нужен мой.... Пирамидальных сортировок большая куча.....я по ним бакалавр защитила. |
| Автор: THandle 17.7.2008, 23:30 |
Можно посмотреть реализацию на Делфи? У меня Билдера нет, да и в С++ я не особо силен. А делфийский код мог бы посмотреть, попробовать сделать а потом сравнить с С++... |
| Автор: lansel 18.7.2008, 10:45 | ||||
|
| Автор: THandle 18.7.2008, 11:17 | ||
Привел код в относительно красивое состояние(вдруг кто-то захочет подебажить?):
Сам постараюсь заняться этим кодом завтра. Сейчас просто день рождения праздную Кстати, хотелось бы узнать - что это за типчик такой подозрительный в процедурку заходит? Procedure busort(var x : array of tip); ??? |
| Автор: lansel 18.7.2008, 19:15 | ||
Type tipkey=integer; tip=Record key:tipkey; end; Var X:Array[1..n]of tip; |
| Автор: Palladin 19.7.2008, 02:47 |
| Неужели для задачи необходимо использовать именно этот код? да и именно этот способ сортировки? P.S. Задачу в студию |
| Автор: lansel 19.7.2008, 09:25 | ||
Какую такую задачу?? Да мне нужен именно этот код!!! |
| Автор: HoTMetaL 19.7.2008, 12:15 | ||||
| Посмотрел я твой код и заодним привёл в порядок. Скажу тебе одну вещь - этот код был написан по алгоритму, в котором нумерация элементов входного массива начиналась с 1, а не с 0. Тебе никто не мешает начинать заполнение массива с первого, а не с нулевого элемента. Пусть он там себе в памяти болтается и никому не мешает. И ещё, если вдруг кто-то захочет переписать эту программу под массив с нумерацией с нуля, пусть обратит внимание на изменение значений переменной j, т.к. именно она отвечает за индексы.
Добавлено через 5 минут и 15 секунд А на Delphi ещё проще: пишешь
|