Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 692

/ вопрос открыт /

Здравствуйте, эксперты!

Есть 2 массива со строковыми значениями (значения уникальны в пределах каждого массива).

Подскажите алгоритм, который максимально быстро сможет выдать только те значения из одного массива, которых нет во втором?

С уважением.

Фамилия Имя Отчество Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Фамилия Имя Отчество (статус: Посетитель)
Вопрос отправлен: 25 октября 2011, 16:24
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Казаков Николай Константинович

Здравствуйте, Фамилия Имя Отчество!
На ум приходит только сравнение каждого элемента из одного массива с каждым элементом из другого, если совпадает, выводим этот элемент

Ответ отправил: Казаков Николай Константинович (статус: 1-ый класс)
Время отправки: 25 октября 2011, 16:49


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 25 октября 2011, 16:52; участников в обсуждении: 3.
Фамилия Имя Отчество

Фамилия Имя Отчество (статус: Посетитель), 25 октября 2011, 16:25 [#1]:

Забыл указать, что кол-во значений в массивах - несколько десятков тысяч.
min@y™

min@y™ (статус: Доктор наук), 25 октября 2011, 16:36 [#2]:

Цитата (Фамилия Имя Отчество):

Подскажите алгоритм, который максимально быстро сможет выдать только те значения из одного массива, которых нет во втором?


Не знаю, насколько быстро будет работать такой вариант, но пока не попробуешь - не узнаешь.

1) Берёшь TStringList и пихаешь в него свои строки из 2-го массива.
2) Сортируешь TStringList. Это нужно для бинарного поиска.
3) Пробегаешь в цикле по строкам 1-го массива, подставляя каждую строку в метод IndexOf() TStringList'a. Если метод вернул -1, то текущей строки 1-го массива нету во 2-м массиве.

Вот как-то так...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
DNK

DNK (статус: Студент), 25 октября 2011, 16:52 [#3]:

Полагаю Интерполирующий поиск. Ну и совсем для красноглазых, можно ещё ускорить при помощи хэш-таблиц. Правда тут нужно строго подойти к выбору алгоритма хеширования, всегда должно выполняться условие: если элемент1 < элемент2, то хеш1 <= хеш2.
"Digital Networked Knight"

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:35
Выполнено за 0.03 сек.