Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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) smile
Кстати, сколько записей хранится в файле? Счёт идёт на сотни, или десятки тысяч?
Добавлено @ 09:58
Если же сохранять сортированность файла крайне тяжело (часто добавляется много записей),
то сравнение можно ускорить, прохешировав значения строк и приписав значения хешей.
Сравнение в общем случае ускорится, так как вместо дорогого strcmp можно использовать operator==(int,int).

Заодно и индексный файл можно построить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)