Название: [РЕШЕНО] Быстрый поиск ближайшего значения Отправлено: deMax от Август 11, 2017, 15:04 Как быстро найти число в массиве больше заданного? Допусти {1,10,100,150} на 15 вывести 100.
Есть QMap::lowerBound(const Key &key) вроде то что нужно, но придется хранить значения для ключей. Название: Re: Быстрый поиск ближайшего значения Отправлено: Bepec от Август 11, 2017, 16:09 Ну, если массив маленький( до 10к), то проще отсортировать и пройтись.
Если массив средний, то ассоциативные контейнеры помогут. Если массив ахренительный, то разбивать поиск по частям, параллельно. Если данных ну просто офилиард, то загнать всё нафиг в sql и туда гонять запросы :D Название: Re: Быстрый поиск ближайшего значения Отправлено: m_ax от Август 11, 2017, 20:01 Как быстро найти число в массиве больше заданного? Допусти {1,10,100,150} на 15 вывести 100. Если предполагается, что последовательность отсортирована, то стандартный std::lower_bound, а если нет.. То да, фактически остаётся переборЕсть QMap::lowerBound(const Key &key) вроде то что нужно, но придется хранить значения для ключей. Код
Название: Re: Быстрый поиск ближайшего значения Отправлено: Igors от Август 12, 2017, 06:31 std изучается настолько усердно что упускается то немногое ценное что там есть :) Ну какое же lower_bound если больше заданного? Для этого есть std::upper_bound. Конечно в любом случае требуется сортированный массив
Да, и кстати это работает быстрее ассоциативного контейнера Название: Re: Быстрый поиск ближайшего значения Отправлено: deMax от Август 14, 2017, 07:40 Спасибо. std::lower_bound подойдет, не знал, не пользовался :-[ (хотя QMap::lower_bound приходилось использовать)
Массив очень маленький, просто шерстить его нужно в paintevent. |