Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Неочевидный метод сортировки ...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
NDim



Зарегистрирован: 11.01.2002
Сообщения: 44
Откуда: Екатеринбург

СообщениеДобавлено: Вт Окт 12 2004 11:41    Заголовок сообщения: Неочевидный метод сортировки ... Ответить с цитатой

Как осуществить сортировку по трем и более полям одновременно ?
Так же как в SQL например [...order by a,b,c].
Подскажите хотя бы сам принцип ...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Витал



Зарегистрирован: 09.08.2004
Сообщения: 73

СообщениеДобавлено: Ср Окт 13 2004 03:51    Заголовок сообщения: Ответить с цитатой

а что сортировать то собираешься
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
NDim



Зарегистрирован: 11.01.2002
Сообщения: 44
Откуда: Екатеринбург

СообщениеДобавлено: Ср Окт 13 2004 05:53    Заголовок сообщения: Неочевидный метод сортировки ... Ответить с цитатой

Разве это важно ?
Не базу данных и использование баз нежелательно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Витал



Зарегистрирован: 09.08.2004
Сообщения: 73

СообщениеДобавлено: Ср Окт 13 2004 09:20    Заголовок сообщения: Ответить с цитатой

Ну,задачка интерессная,я бы подумал,но представить себе не могу структуру.Просто начинай сортировать по последнему признаку,потом сортируй по второму(сортировка по третьему сохраниться),позже переходи на первый(второй и третий не должны слететь).Правда все это должно работать при каком-нубудь пузырьковом методе а так на деле не знаюкак будет.
Хм,пытался тут примерчик сообразить,объемно вытекает,пробуй обходить наборы с начала и вставлять в конец аналогичных(т.е. вставляй значение в конце таких же,а не в начале),попробуй.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alexandr 172



Зарегистрирован: 03.09.2004
Сообщения: 66
Откуда: Челябинск

СообщениеДобавлено: Ср Окт 13 2004 09:52    Заголовок сообщения: Ответить с цитатой

Лучше использовать с помощью этих трех полей сделать какое-нибудь выражение и уже его сортировать обычным способом.
Например, три поля (F1, F2, F3), каждое состоит из одинакового кол-ва символов, тогда, сортировать можно по
F1.F2.F3 (просто конкатенация)
здесь в первую очередь отсортируется по F1, потом по F2, и в конце по F3.
_________________
www.pay-ace.com/Ras254 - всем в подарок $150
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Andy-C



Зарегистрирован: 09.12.2003
Сообщения: 73
Откуда: Нальчик

СообщениеДобавлено: Чт Окт 14 2004 11:26    Заголовок сообщения: Ответить с цитатой

Определить операцию отношения: (f1,f2,f3)>(f1`,f2`,f3`)
И при помощи неё определить порядок следования кортежей.
_________________
До onlina Andrew C.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
NDim



Зарегистрирован: 11.01.2002
Сообщения: 44
Откуда: Екатеринбург

СообщениеДобавлено: Пт Окт 15 2004 06:55    Заголовок сообщения: Неочевидный метод сортировки ... Ответить с цитатой

Нашел способ !
Путем организации комплексного индекса особым образом.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Malcolm



Зарегистрирован: 12.06.2004
Сообщения: 187
Откуда: Хабаровск

СообщениеДобавлено: Пт Окт 15 2004 23:10    Заголовок сообщения: Ответить с цитатой

Я тут знаете ли в институте учусь, так там нам такую задачку давали. Все поголовно делали тремя подряд идущими пузырьковыми сортировками Laughing, я же додумался использовать метод предложенный здесь Andy-C реализованный с помощью предложения Alexandr 172 Smile. Плюсы - что можно использовать при любом методе сортировки, в т.ч. и методом быстрой сортировки (я так и делал)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike



Зарегистрирован: 17.11.2001
Сообщения: 339
Откуда: ekb

СообщениеДобавлено: Пн Окт 18 2004 09:08    Заголовок сообщения: Ответить с цитатой

Что вы тут все мудрите ? Например, для быстрой сортировки - в функции сравнения надо просто учитывать, что полей для сравнения 3, на не 1, если значения в первом поле совпадают, то сравнивается 2-е поле, и т.д.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Malcolm



Зарегистрирован: 12.06.2004
Сообщения: 187
Откуда: Хабаровск

СообщениеДобавлено: Пн Окт 18 2004 19:10    Заголовок сообщения: Ответить с цитатой

Нет, это вы мудрите Cool - Зачем писать все эти условия, если можно сравнивать одним условием? гораздо меньше кода, и не намного медленней
Цитата:

сортировать можно по
F1.F2.F3 (просто конкатенация)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike



Зарегистрирован: 17.11.2001
Сообщения: 339
Откуда: ekb

СообщениеДобавлено: Вт Окт 19 2004 06:25    Заголовок сообщения: Ответить с цитатой

Хе-хе, а если это не строковые поля ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Mike



Зарегистрирован: 17.11.2001
Сообщения: 339
Откуда: ekb

СообщениеДобавлено: Вт Окт 19 2004 06:30    Заголовок сообщения: Ответить с цитатой

Да и работать будет быстрее. В случае с конкатенацией будет обязательно 2 операции - собственно конкатенация и сравнение, а в моем варианте - операций как минимум 1, как максимум 3, в зависимости от сравниваемой иформации. К тому же конкатенация разбивается еще на кучу операций, как то: выделение памяти под новую строку, копирование всех трех старых строк в новую. На хрена это ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Mike



Зарегистрирован: 17.11.2001
Сообщения: 339
Откуда: ekb

СообщениеДобавлено: Вт Окт 19 2004 06:33    Заголовок сообщения: Ответить с цитатой

Кстати, если вдуматься, то Andy-C предлагал такой же вариант Smile)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alexandr 172



Зарегистрирован: 03.09.2004
Сообщения: 66
Откуда: Челябинск

СообщениеДобавлено: Вт Окт 19 2004 08:05    Заголовок сообщения: Ответить с цитатой

2 Mike: А вот как ты в SQL условие запихнешь поочередное сравнение по полям, очень интересно? Что то я не могу себе такого представить.
_________________
www.pay-ace.com/Ras254 - всем в подарок $150
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike



Зарегистрирован: 17.11.2001
Сообщения: 339
Откуда: ekb

СообщениеДобавлено: Вт Окт 19 2004 08:07    Заголовок сообщения: Re: Неочевидный метод сортировки ... Ответить с цитатой

NDim писал(а):
... использование баз нежелательно.


А в SQL запросе я напишу ORDER BY .....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alexandr 172



Зарегистрирован: 03.09.2004
Сообщения: 66
Откуда: Челябинск

СообщениеДобавлено: Вт Окт 19 2004 09:39    Заголовок сообщения: Ответить с цитатой

Вот, надо же совсем уже забыл о чем речь идет... действительно нужно не для SQL
_________________
www.pay-ace.com/Ras254 - всем в подарок $150
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Malcolm



Зарегистрирован: 12.06.2004
Сообщения: 187
Откуда: Хабаровск

СообщениеДобавлено: Вт Окт 19 2004 18:32    Заголовок сообщения: Ответить с цитатой

Mike писал(а):
Хе-хе, а если это не строковые поля ?

Если числа не большие ~2байт, то shl (еще быстрей работать будет) а если большие или не все числа, то тут уж никак.. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

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


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...