Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка строк, чем быстрее тем лучше 
:(
    Опции темы
FelikZ
Дата 25.12.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


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

Репутация: нет
Всего: 5



Подскажите плз как реализовать самую быструю сортировку массива из строк, при условии что
символы в строках могут быть не только буквами.
--------------------------------------------------------------------
Ограничение оперативки 128 метров
Максимум 100 000 строк


--------------------
user posted image
PM WWW ICQ Skype   Вверх
Fedor
Дата 25.12.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


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

Репутация: нет
Всего: 32



А обычная быстрая сортировка не прокатит?
100000*log(100000)=500000
Это примерно одна десятая секунды.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
VaiMR
Дата 25.12.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А строки по какому принципу сортируются?
PM MAIL ICQ   Вверх
JackYF
Дата 26.12.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



VaiMR, по лексикографическому.
Сравниваются первые буквы. Если равны, то вторые и т.д.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
comp
Дата 26.12.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



По-моему, надо цифровую сортировку. Она как-то, по-моему, больше подходит для данных такого рода.
PM MAIL   Вверх
zkv
Дата 26.12.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

Репутация: 26
Всего: 92



Цитата(VaiMR @  25.12.2006,  23:26 Найти цитируемый пост)
А строки по какому принципу сортируются? 


Цитата(JackYF @  26.12.2006,  19:26 Найти цитируемый пост)
VaiMR, по лексикографическому.

необязательно, можно написать свой  предикат или функатор, в него закладываем нужный принцип smile
понимаю, что общеизвестно, но раз человек спросил, думаю стоит упомянуть.  
PM MAIL   Вверх
JackYF
Дата 26.12.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(comp @  26.12.2006,  19:39 Найти цитируемый пост)
По-моему, надо цифровую сортировку. Она как-то, по-моему, больше подходит для данных такого рода. 


Это которая radix-sort ? Так она же для значений постоянной длины, и в основном применяется для не очень больших чисел...



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
comp
Дата 27.12.2006, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(JackYF @ 26.12.2006,  19:56)
Это которая radix-sort ? Так она же для значений постоянной длины, и в основном применяется для не очень больших чисел...

По-видимому digit sort будет звучать по-английски... А насчёт приминимости, решалась задача, где даны были числа, в кол-ве, 1000. И каждое число не превышало по значению 10^500... Она всё это сортировала меньше чем за секунду

Это сообщение отредактировал(а) comp - 27.12.2006, 17:05
PM MAIL   Вверх
JackYF
Дата 27.12.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(comp @  27.12.2006,  17:04 Найти цитируемый пост)
Она всё это сортировала меньше чем за секунду


Ну, там больше будет занимать перемещение самих чисел, чем сама сортировка.
Для 1000 чисел? 1 секунда? ИМХО много.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
FelikZ
Дата 27.12.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


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

Репутация: нет
Всего: 5



P.S.
Я пробывал сортировать через strcmp, но в этом случае на компе:
AMD 850mHz
128mb

Думало несколько секунд...(А надо чтобы максимум секунда) По-етому решил обратиться за помощью smile 


--------------------
user posted image
PM WWW ICQ Skype   Вверх
Любитель
Дата 27.12.2006, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Сортировка своя? Я ничего против не имею, но всё таки производители компилеров очень хорошо юзают оптимизацию.


--------------------
PM MAIL ICQ Skype   Вверх
maxim1000
Дата 27.12.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 17
Всего: 110



Цитата(FelikZ @  27.12.2006,  18:36 Найти цитируемый пост)
Я пробывал сортировать через strcmp, но в этом случае на компе:
AMD 850mHz
128mb

Думало несколько секунд...(А надо чтобы максимум секунда) По-етому решил обратиться за помощью

а как строки меняются местами?
(если указателями, то нормально, главное, чтобы копирований не было)


--------------------
qqq
PM WWW   Вверх
FelikZ
Дата 27.12.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


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

Репутация: нет
Всего: 5



да, менял местами указатели


--------------------
user posted image
PM WWW ICQ Skype   Вверх
BSOD
Дата 28.12.2006, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 3



походу радих должен помочь, тока в конец каждой строки нуна приписывать что-нить типа #, что б они одинаковой длины стали, ну а после сортировки все удалить (ну всмысле с конца строки smile )


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
comp
Дата 28.12.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Господи... какое нафиг перемещение чисел!!!А зачем придумали индексацию... Я разве сказал - 1 секунда... я сказал, меньше чем за секунду, а если точнее, то 384ms... по-моему, вполне.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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