| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сортировка списков |
| Автор: Alx 21.10.2004, 13:04 |
| Буду очень благодарен за кусочек кода! Такая проблема. Есть 2 одномерных массива. В первом - данные, а во втором номер следующей ячейки первого массива. Нужно отсортировать первый массив (любым, но лучше самым понятным способом) перестовляя цифры вкорого массива. (списки циклические) 3 5 7 2 4 9 6 2 3 4 5 7 6 1 Что я только не пробовал!!! Ну ЛАМЕР Я! ЛА-А-АМЕР!!! |
| Автор: p0s0l 21.10.2004, 14:07 | ||||
Т.е. в итоге должно быть так ?
|
| Автор: Guest 21.10.2004, 14:26 |
| Не! Должно быть так: 3 5 7 2 4 9 6 5 7 6 1 2 4 3 |
| Автор: ~FoX~ 21.10.2004, 14:45 | ||||||||
Нет наверное все таки так
Т.к.
Идея такова: Берем любой алгоритм сортировки, я взял пузырек и сортим не 1 массив, а сразу 2-а
Держи, могешь пользоваться!
Или я че та не врубился |
| Автор: Guest 21.10.2004, 15:06 |
| Нее! Идея такова! Первый массив мы не трогаем. Берем первую ячейку первого массиа сравниваем ее со следующей ячейкой (а вот номер следующей ячейки берем из второго массива). Переставляются местами только указатели второго массива.... Только вот по списку можно идти в одну сторону, а следовательно ПУЗИРЕК не работает. (Списки циклические: Указатель последнего элимента указывает на первую ячейку). Вот |
| Автор: ~FoX~ 21.10.2004, 15:15 |
| Аа.......аааааа Ок! Сейчас пока некогда, но по позже запраграммим. Ту би континуе - как говорят наши друзя в америке |
| Автор: ~FoX~ 21.10.2004, 15:51 |
| Еёёё.... Так давайка уточним 1. Сравниваем одно число с другим (первого массива) и..........как я понял............если одно больше/меньше другого то меняем местами указатели на числа, так? Если нет, то опиши конрктней. 2. С какого числа начинается сравнение? 3. Если списки у тебя цыкличиские, то опиши критерии выхода из цикла, а то он так и будет мотаться по кругу без остановки. Перестановки будут существовать всегда! 4. В конце ты хочешь получить отсортированный второй массив? 5. Почему по списку можно идти только в одну сторону? Почиму при этом пузырек не работает - он что в разные сторны ходит? 6. Опиши всю задачу целиком, а то че та я вапще запутался!!!! |
| Автор: p0s0l 21.10.2004, 16:06 | ||
Ни-че-го не-понял
По какому принципу это сформировано ? Первый массив = a Второй массив = b b[1] = 5, это значит берём a[5] = 4 b[2] = 7, это значит берём a[7] = 6 b[3] = 6, это значит берём a[6] = 9 b[4] = 1, это значит берём a[1] = 3 b[5] = 2, это значит берём a[2] = 5 b[6] = 4, это значит берём a[4] = 2 b[7] = 3, это значит берём a[3] = 7 Т.е. в итоге: 4693527 - где же тут упорядоченность ??? |
| Автор: Guest 21.10.2004, 16:11 |
| 1. вроде да. 2.,3. Начинать с любого элимента и наверное на нем и заканчивать 4. В конце нужно получить отсортированный первый массив если пройти по второму массиву попорядку 5 По одностороннему списку (а у нас односторонний т.к. у каждого элимента есть указатель только на следующий) можно идти только в одни сторону. А на сколько я знаю ПУЗЫРЕК работает от начала к концу, как видит неправельный элимент - выталкивает его к началу ( вот тут я могу ошибаться) 6. Есть 2 одномерных массива. В первом - данные, а во втором номера следующих ячеек первого массива. Нужно отсортировать первый массив перестовляя цифры второго массива. Мы идем к каждой следующей ячейке вроде какимто таким способом Mas1[Mas2[i]] |
| Автор: Guest 21.10.2004, 16:18 |
| p0s0l, вот ты взял первую строчку - b[1] = 5, это значит берём a[5] = 4 верно. А потом берем b[5] и.т.д |
| Автор: ~FoX~ 21.10.2004, 16:46 | ||||||||
| 2Guest 1.
Тааааааак. Может я под вечер вообще тупить начинаю. Так, во втором массиве содержаться не только указатели на следующее число в первом массиве, но и на следующее число в нем самом, что ли?
Если да то число
Вообще участвовать не будет. 2.
Гык...... 4-6-9-3-5-2-7 Я хреново понял где тут упорядоченность Расскажи мне, откудаво взялась такая чудовая задачка, я если чесно смутно представляю облость применения такой байды! |
| Автор: Guest 21.10.2004, 16:53 |
| 3 5 7 2 4 9 6 5 7 6 1 2 4 3 Нв вот смотрите. По порядку чередую Первый масив/ второй масив, Первый масив/ второй масив, Первый масив/ второй масив, и.т.д 3/5 переходим к пятим ячейкам, 4/2 переходим ко вторым ячейкам, 5/7 и.т.д Результат должен быть таким. |
| Автор: Underdark 21.10.2004, 16:56 | ||||
Люди,
P.S. Guest, слушай, а у тебя и в самом деле в начальном массиве ошибка
|
| Автор: Guest 21.10.2004, 17:13 |
| А! Ну да там ошибочка. Спасибо за пример пойду домой разбираться. А вообще ето один пинктик из домашнего задания в институте с которым я сам не справился. ж-) СПАСИБО! |
| Автор: ~FoX~ 22.10.2004, 08:09 | ||
Млин ну просил же "всю задачу целиком" описать |