| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Быстрое сравнение |
| Автор: admsasha 9.1.2006, 09:35 |
| есть файл с содержимым 32e:fddfdf we2:wer32 s33:werew34 ew:dshjk есть два параметра p1 и p2, мне надо узнать существует ли комбинация p1:p2 в этом файле или нет можно считывать содержимое файла построчно и сравнивать, а можно ли это сделать другим способом ? более быстрым с малым кодом ? |
| Автор: Mayk 9.1.2006, 09:55 |
| В общем случае нет, так как тут происходит чистый линейный поиск. Можно остортировать файл (и держать его отсортированным) и выполнить бинарный поиск. Отсортировать файл можно sort(1) Кстати, сколько записей хранится в файле? Счёт идёт на сотни, или десятки тысяч? Добавлено @ 09:58 Если же сохранять сортированность файла крайне тяжело (часто добавляется много записей), то сравнение можно ускорить, прохешировав значения строк и приписав значения хешей. Сравнение в общем случае ускорится, так как вместо дорогого strcmp можно использовать operator==(int,int). Заодно и индексный файл можно построить. |