Имя пользователя:
Пароль:
 

Название темы: Перебор массивов
Показать сообщение отдельно
mwz mwz вне форума

Аватара для mwz

Ушел из жизни


Сообщения: 8595
Благодарности: 2127

Профиль | Сайт | Отправить PM | Цитировать


c4uran, в общих чертах — пара алгоритмов, чисто для понимания:

Тупой способ — прочитать первое значение первого массива, а затем сравнивать его со значениями массива методом полного перебора этого второго. Если при каком-то из сравнений совпадение есть — выполнить действие и перейти к следующему элементу первого массива прервав сравнение текущего, если же совпадения нет — по исчерпании второго массива перейти ко следующему элементу первого массива и повторить.

Метод очень нерационален: время исполнения зависит от количества элементов массивов квадратично.

Более интеллектуально (время поиска зависит от количества элементов почти линейно) — из второго массива создать вспомогательный, упорядочив в нем элементы по возрастанию — и далее сравнивать методом половинного деления вспомогательного массива: если элемент первого, соответствующий [примерно] среднему элементу второго, меньше — то на следующем шаге брать середину верхней половины вспомогательного, если больше — середину нижней половины, и т.д., каждый раз отсекая уже проанализированные ненужные половинки. При совпадении же — выполнить действие и перейти к следующему элементу первого массива, прервав сравнение текущего.

Или проиндексировав второй массив — что по времени поиска даст примерно одно и то же.

Ох, сейчас корифеи бить будут...

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 06-10-2018 в 11:16.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:09, 06-10-2018 | #2

Название темы: Перебор массивов