Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Поиск дубликатов файлов


Автор: HMLd 12.4.2010, 12:45
Здравтствйте. Надо написать программу для поиска дубликатов файлов в директории. Интеремует именно алшоритм. Почитал гугл - многие считают md5 и потом сортируют это дело QuickSort'ом. 

А может лучше было бы построить бинарное дерево поиска с ключом TSearchRec (т.к. писаться всё это будет в билдере)? Как вы думаете?

Автор: azesmcar 12.4.2010, 12:48
Цитата(HMLd @  12.4.2010,  12:45 Найти цитируемый пост)
Почитал гугл - многие считают md5 и потом сортируют это дело QuickSort'ом. 

Я бы сперва проверил по размеру а потом по md5. Так будет быстрее.

Добавлено через 2 минуты и 30 секунд
Цитата(HMLd @  12.4.2010,  12:45 Найти цитируемый пост)
А может лучше было бы построить бинарное дерево поиска с ключом TSearchRec (т.к. писаться всё это будет в билдере)? Как вы думаете? 

каким образом собираешься строить бинарное дерево?

Автор: HMLd 12.4.2010, 12:57
FindFirst(...) - получаем ссылку на структуру TSearchRec (или WIN32_FIND_DATA если на API). 
Потом
class BST
{
    BST*        left;
    BST*        right;
    BST*        parent;
    TSearchRec* obj;
        .
        .
        .
};

Указателю Obj присваиваем адрес объекта, на который указывает ссылка. Выдёргиваем имя файла из структуры и размер или что там нам ещё надо. И строим дерево. 

Автор: azesmcar 12.4.2010, 13:00
И зачем так извращаться? Чем не устраивают контейнеры STL? Почему бы не залить все в multimap/multiset?

Автор: HMLd 12.4.2010, 13:10
А multimap/multiset - структуры типа BST?

Автор: azesmcar 12.4.2010, 13:28
Да

Добавлено через 2 минуты и 2 секунды
тут тебе больше подойдет std::map<string, string>
путь к файлу -> хэш

Автор: HMLd 12.4.2010, 13:36
Спасибо.

Автор: Polesinskij 1.11.2013, 17:49
а чем отличается мдп5 от хэша?расталкуйте кто знает тут

Автор: azesmcar 1.11.2013, 18:09
Цитата(Polesinskij @  1.11.2013,  17:49 Найти цитируемый пост)
а чем отличается мдп5 от хэша?расталкуйте кто знает тут 

MD5 это алгоритм хеширования.

Автор: disputant 2.11.2013, 11:50
Дубликат должен иметь одинаковый размер.

md5 - это уже перебор, за глаза хватит crc32. Более того, в зависимости от того, как все происходит - может оказаться более быстрым просто непосредственное сравнение файлов.


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