Бысрый способ получить 100 наименьших элементов, из 10 000 000 000 записей или более |
Здравствуйте, гость ( Вход | Регистрация )
Бысрый способ получить 100 наименьших элементов, из 10 000 000 000 записей или более |
BRE |
21.8.2010, 21:48
Сообщение
#11
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
igor_bogomolov |
21.8.2010, 21:49
Сообщение
#12
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
DEADHUNT |
21.8.2010, 22:00
Сообщение
#13
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
получаем сложность O(n) |
|
|
Алексей1153 |
21.8.2010, 22:00
Сообщение
#14
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
DEADHUNT, наверное, правильНЕЕ , но студия понимает и так
Кстати, победил:
|
|
|
DEADHUNT |
21.8.2010, 22:04
Сообщение
#15
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
Алексей1153, как то у тебя нагромаждённо получается, наверняка можно было проще твой вариант сделать.
|
|
|
Алексей1153 |
21.8.2010, 22:19
Сообщение
#16
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
igor_bogomolov, а вот пример использования, который креатор тоже не прожевал, а студия понимает нормально. Тут то что не так ))
DEADHUNT, может и можно. Покажи, я готов учиться Кстати, о птичках. Потом интересно будет сравнить по скорости работы ) Представьте, что нет никакого STL. Есть чистый С\С++ и все! чистый C++ содержит STL , вообще то ) Ну а если задача стоИт - без STL , то реализацию контейнера в виде класса (или его "размазанную" по коду процедуры реализацию) придётся также сочинять. И отлаживать Сообщение отредактировал Алексей1153 - 21.8.2010, 22:10 |
|
|
igor_bogomolov |
21.8.2010, 22:24
Сообщение
#17
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
получаем сложность O(n) Всё равно медленнее, чем в варианте BRE. У тебя на каждом шаге происходит сортировка массива из 100 элементов со сложностью O(nlogn). В алгоритме BRE элемент встаёт на место за время O(logn) используя бинарный поискИнтересно, возможно ли сделать оптимальнее чем у BRE |
|
|
DEADHUNT |
21.8.2010, 22:38
Сообщение
#18
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
Всё равно медленнее, чем в варианте BRE. У тебя на каждом шаге происходит сортировка массива из 100 элементов со сложностью O(nlogn). В алгоритме BRE элемент встаёт на место за время O(logn) используя бинарный поиск Интересно, возможно ли сделать оптимальнее чем у BRE на самом деле у него на каждом шаге сложность O(n) where n = 100, так как он использует список. сортировка на самом деле лишняя, так как достаточно найти место куда вставить и всё.
без Qt кстати лучше получается. |
|
|
igor_bogomolov |
21.8.2010, 22:54
Сообщение
#19
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
на самом деле у него на каждом шаге сложность O(n) where n = 100, так как он использует список. Это Qt. QList - это не двусвязный список, и доступ до элемента осуществляется за O(1). http://doc.crossplatform.ru/qt/4.6.x/conta...hmic-complexity |
|
|
DEADHUNT |
21.8.2010, 23:00
Сообщение
#20
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 4:21 |