Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка списков, Сортировка списков 
:(
    Опции темы
Alx
Дата 21.10.2004, 13:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Буду очень благодарен за кусочек кода! Такая проблема. Есть 2 одномерных массива. В первом - данные, а во втором номер следующей ячейки первого массива. Нужно отсортировать первый массив (любым, но лучше самым понятным способом) перестовляя цифры вкорого массива. (списки циклические)

3 5 7 2 4 9 6
2 3 4 5 7 6 1

Что я только не пробовал!!! Ну ЛАМЕР Я! ЛА-А-АМЕР!!! :hehe
  Вверх
p0s0l
Дата 21.10.2004, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата
3 5 7 2 4 9 6
2 3 4 5 7 6 1


Т.е. в итоге должно быть так ?
Код
3 5 7 2 4 9 6
4 1 5 2 7 3 6



--------------------
С уважением, г-н Посол.
PM   Вверх
Guest
Дата 21.10.2004, 14:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не! Должно быть так:

3 5 7 2 4 9 6
5 7 6 1 2 4 3


  Вверх
~FoX~
Дата 21.10.2004, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Нет наверное все таки так
Код

2 3 4 5 6 7 9
5 2 7 3 1 4 6


Т.к.
Цитата
Нужно отсортировать первый масси


Идея такова:
Берем любой алгоритм сортировки, я взял пузырек и сортим не 1 массив, а сразу 2-а
Код

var
 temp: integer;
 a, b: array[1..6] of integer;
 i, j: integer;
begin
for i := 1 to 5 do
 for j := i to 6 do
   begin
      if a[i] > a[j] then
         begin
            temp := a[i];
            a[i] := a[j];
            a[j] := temp;
            temp := b[i];
            b[i] := b[j];
            b[j] := temp;
         end;
   end;
end;

Держи, могешь пользоваться! :hehe :p

Цитата

3 5 7 2 4 9 6
2 3 4 5 7 6 1 <- так это не ошибка?

Или я че та не врубился

Это сообщение отредактировал(а) ~FoX~ - 21.10.2004, 14:54


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Guest
Дата 21.10.2004, 15:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Нее! Идея такова! Первый массив мы не трогаем. Берем первую ячейку первого массиа сравниваем ее со следующей ячейкой (а вот номер следующей ячейки берем из второго массива). Переставляются местами только указатели второго массива.... Только вот по списку можно идти в одну сторону, а следовательно ПУЗИРЕК не работает. (Списки циклические: Указатель последнего элимента указывает на первую ячейку). Вот
  Вверх
~FoX~
Дата 21.10.2004, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Аа.......аааааа :stena туплю простите.
Ок!
Сейчас пока некогда, но по позже запраграммим. Ту би континуе - как говорят наши друзя в америке :p



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 21.10.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Еёёё....
Так давайка уточним

1. Сравниваем одно число с другим (первого массива) и..........как я понял............если одно больше/меньше другого то меняем местами указатели на числа, так? Если нет, то опиши конрктней.
2. С какого числа начинается сравнение?
3. Если списки у тебя цыкличиские, то опиши критерии выхода из цикла, а то он так и будет мотаться по кругу без остановки. Перестановки будут существовать всегда!
4. В конце ты хочешь получить отсортированный второй массив?
5. Почему по списку можно идти только в одну сторону? Почиму при этом пузырек не работает - он что в разные сторны ходит?
6. Опиши всю задачу целиком, а то че та я вапще запутался!!!!

:qstn :qstn :qstn :qstn

Это сообщение отредактировал(а) ~FoX~ - 21.10.2004, 15:52


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
p0s0l
Дата 21.10.2004, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Ни-че-го не-понял :)
Цитата(Guest @ 21.10.2004, 14:26)
Не! Должно быть так:

3 5 7 2 4 9 6
5 7 6 1 2 4 3

По какому принципу это сформировано ?

Первый массив = 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 - где же тут упорядоченность ??? :qstn

:sample :sample :sample


--------------------
С уважением, г-н Посол.
PM   Вверх
Guest
Дата 21.10.2004, 16:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1. вроде да.
2.,3. Начинать с любого элимента и наверное на нем и заканчивать
4. В конце нужно получить отсортированный первый массив если пройти по второму массиву попорядку
5 По одностороннему списку (а у нас односторонний т.к. у каждого элимента есть указатель только на следующий) можно идти только в одни сторону. А на сколько я знаю ПУЗЫРЕК работает от начала к концу, как видит неправельный элимент - выталкивает его к началу ( вот тут я могу ошибаться)
6. Есть 2 одномерных массива. В первом - данные, а во втором номера следующих ячеек первого массива. Нужно отсортировать первый массив перестовляя цифры второго массива.
Мы идем к каждой следующей ячейке вроде какимто таким способом Mas1[Mas2[i]]
  Вверх
Guest
Дата 21.10.2004, 16:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











p0s0l, вот ты взял первую строчку - b[1] = 5, это значит берём a[5] = 4 верно. А потом берем b[5] и.т.д
  Вверх
~FoX~
Дата 21.10.2004, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



2Guest
1.
Цитата(Guest @ 21.10.2004, 16:18)
b[1] = 5, это значит берём a[5] = 4 верно. А потом берем b[5]

Тааааааак. Может я под вечер вообще тупить начинаю.
Так, во втором массиве содержаться не только указатели на следующее число в первом массиве, но и на следующее число в нем самом, что ли?

Цитата

А потом берем b[5]


Если да то число
Цитата

3 5 7 2 4 9 6
2 3 4 5 7 6 1

Вообще участвовать не будет.

2.
Цитата(Guest @ 21.10.2004, 14:26)
Не! Должно быть так:

3 5 7 2 4 9 6
5 7 6 1 2 4 3


Гык...... 4-6-9-3-5-2-7
Я хреново понял где тут упорядоченность



Расскажи мне, откудаво взялась такая чудовая задачка, я если чесно смутно представляю облость применения такой байды!

Это сообщение отредактировал(а) ~FoX~ - 21.10.2004, 16:49


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Guest
Дата 21.10.2004, 16:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 12.7.2004
Где: Ульяновск

Репутация: 1
Всего: 2



Люди, :D здесь все работает, в том числе и метод пузырька:

Код
var
temp: integer;
a, b: array[1..6] of integer;
i, j: integer;
begin
for i := 1 to 5 do
for j := i to 6 do
begin
  if a[b[i]] > a[b[j]] then
   begin
     temp := b[i];
     b[i] := b[j];
     b[j] := temp;
   end;
end;
end;




P.S. Guest, слушай, а у тебя и в самом деле в начальном массиве ошибка
Цитата
3 5 7 2 4 9 6
2 3 4 5 7 6 1
Здесь 9-тка ссылается на саму себя!!!

Это сообщение отредактировал(а) Underdark - 21.10.2004, 17:00
PM MAIL   Вверх
Guest
Дата 21.10.2004, 17:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А! Ну да там ошибочка. Спасибо за пример пойду домой разбираться. А вообще ето один пинктик из домашнего задания в институте с которым я сам не справился. ж-) СПАСИБО!
  Вверх
~FoX~
Дата 22.10.2004, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата
6. Опиши всю задачу целиком, а то че та я вапще запутался!!!!


Млин ну просил же "всю задачу целиком" описать


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0813 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.