Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2015, 09:53   #1
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию Сортировка двумерных данных приходящих в рандомном порядке

Привет, подскажите, как оптимальней решить такую задачу.
(если что, ЯП: python)

Есть веб-сервис, получающий некие данные в виде списка (елементы списка уже отсортированны правильно).
Данные приходят в несколько потоков, помимо данных есть порядковый номер.
В итоге, собрать все данные в единый список, осортированный в правильном порядке.

например могут прийти три пакета с такими элементами
[el-1-0] # пришел первым, порядковый номер: 1
[el-3-0, el-3-1] # пришел вторым, порядковый номер 3
[el-2-0, el-2-1] # пришел третим, порядковый номер 2

в итоге нужен список:
[el-1-0, el-2-0, el-2-1, el-3-0, el-3-1]

На данный момент у меня из идей только решение в лоб:
Сохраняем все элементы с указанием их индекса (порядковый номер, пришедший со списком) и саб-индекса (порядковый номер в пришедшем списке). Затем, когда все данные получены получить нужный список, например так
Код:
sorted(items, key=lambda item: (item.index, item.subindex))
Может есть какой-то способ, обойтись без саб-индекса и я его просто не вижу? например, если это поможет - я могу заранее узнать сколько всего таких списков я получу.

Последний раз редактировалось st01en; 09.06.2015 в 09:58.
st01en вне форума Ответить с цитированием
Старый 09.06.2015, 11:09   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

получаем несколько отсортированных списков.
Надо составить один общий список с той же сортировкой.
читаем про сортировку слиянием.

Или же задача такова есть несколько цепочек (списков) и надо
ВЫСТРОИТЬ их в нужной последовательности. (простое сцепление в нужном порядке)?
внутри цепочки элементы упорядочены и ВНУТРЬ цепочки никаких добавлений из ДРУГИХ цепочек не будет ?
маркерные элементы (первый-последний в цепочке)
любая сортировка цепочек (сравнением маркерных элементов и перемещением ВСЕГО что между ними)

маркерные индексы элементов
E-1-0, E-1-0
E-3-0, E-3-1
E-2-0, E-2-1
сортировка
элементЫ с E-2-0.....по E-2-1 вставляем на местА начиная с E-3-0 c одновременной сдвижкой И КОРРЕКЦИЕЙ маркерных элементов(если требуется).
.....

можно просто КОПИРОВАНИЕ ВСЕХ цепочек в НОВЫЙ список С СОБЛЮДЕНИЕМ ПРАВИЛЬНОГО порядка.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.06.2015 в 11:26.
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка двумерных числовых массивов данных Barkhovich Помощь студентам 1 20.11.2012 19:01
вычислить количество пятниц приходящих на 13 число заданного столетия siberian_lynx C# (си шарп) 4 30.03.2011 16:05
Сортировка данных в обратном порядке (Delphi 7) NuR1k БД в Delphi 4 24.08.2010 19:36
Сортировка и перестановка элементов в двумерных массивах nikshiyan Паскаль, Turbo Pascal, PascalABC.NET 3 18.07.2010 14:36
сортировка в алфавитном порядке stranger_508 Помощь студентам 0 24.10.2009 14:54