powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск дубликатов
18 сообщений из 18, страница 1 из 1
Поиск дубликатов
    #36829258
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потребовалось сейчас найти в большом массиве строк дубликаты.
Самое простое что пришло в голову:

Код: plaintext
1.
2.
for i =  1  to length(mas) -  2 
    for j = i +  1  to length(mas) -  1  
        if (mas[i] != null and mas[i] == mas[j]) mas[j] = null

Но полагаю есть что-то эффективнее?
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829260
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть, отсортировать массив а потом сравнивать соседние элементы
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829261
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сортировать естественно нужно квик сорт, иначе оптимизация в трубу
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829266
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если изменять массив (сортировать) нежелательно, то используется вспомогательный объект - map, реализованный в виде хэш-таблицы или сбалансированного дерева.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829273
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сбалансированное дерево -- по сути та же сортировка, только с б о льшим расходном памяти.
Хеш-таблицы на больших массивах могут быть не эффективны, смотря что такое "большой" массив.
Сортировка -- в подавляющем большинстве случаев оптимальный вариант.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829284
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3кк записей.
Сортировка, тогда какая? Я только пузырек и пирамидальную помню.
Можно тогда при добавлении элемента проверять.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829287
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett3 кк записей.3 миллиона что-ли?

что за язык используется? Квик-сорт есть готовый много где.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829295
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да 3 млн. Там в каждом элементе одно слово.
Язык - Delphi.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829299
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЯзык - Delphi.По первому посту не заметно :-)

Решение: создаете TStringList, выставляете Sorted=True и добавляете свои 3 млн. строк. После этого в списке автоматически будут только уникальные значения. Анализируя число, возвращаемое методом Add, и свойство Count, можно сделать вывод о том, являлась ли добавляемая строка дублем.
При желании можно поиграться свойством CaseSensitive.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829300
junior  idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HettЯ только пузырек и пирамидальную помню.
Пузырёк лучше забыть. Пирамидальная прокатит.
Но если массив достаточно беспорядочен, то quicksort ощутимо лучше (да она и проще в реализации, чем пирамидальная).
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829310
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А такой вопрос, если сначала заполнить TStingList а потом sorted = true сделать, то он отсортирует? И как это по скорости будет? Быстрее чем сначала выставить и добавлять?
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829316
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, а попробовать самому религия не позволяет?..
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829323
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже пошел.
Работает довольно быстро этот стрингЛист, устраивает. Спасибо за подсказку.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36829631
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Три миллиона строк - в ТСтрингЛист это сурово. Главное чтобы завтра не пришло три миллиарда. А то выйдет конфуз.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36831100
manitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно Поиск дубликатов при помощи разного бесплатного софта. Скачай отсюда, например.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36833076
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТри миллиона строк - в ТСтрингЛист это сурово. Главное чтобы завтра не пришло три миллиарда. А то выйдет конфуз.
Нынче память не 640 килобайт, однако =) Да и там в каждой записи - одно слово.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36833086
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettНынче память не 640 килобайт, однако =) Да и там в каждой записи - одно слово.
Это типичные рассуждения "плохого" девелопера. Не забудь указать в ТЗ что твой софт отбирает всю свободную память.
...
Рейтинг: 0 / 0
Поиск дубликатов
    #36833113
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так сортировал во времена когда вместо строк юзал TMemo(кажется так называлось)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск дубликатов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]