|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Перебор массивов |
|
PowerShell - Перебор массивов
|
Пользователь Сообщения: 122 |
Вроде простая задача но никак не могу найти достаточно лаконичного решения
Есть два массива При переборе первого массива, если его значение совпадает с любым из значений второго массива, выполняется действие наверное решений много, буду признателен если поделитесь разными способами |
|
Отправлено: 09:58, 06-10-2018 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать c4uran, в общих чертах — пара алгоритмов, чисто для понимания:
Тупой способ — прочитать первое значение первого массива, а затем сравнивать его со значениями массива методом полного перебора этого второго. Если при каком-то из сравнений совпадение есть — выполнить действие и перейти к следующему элементу первого массива прервав сравнение текущего, если же совпадения нет — по исчерпании второго массива перейти ко следующему элементу первого массива и повторить. Метод очень нерационален: время исполнения зависит от количества элементов массивов квадратично. Более интеллектуально (время поиска зависит от количества элементов почти линейно) — из второго массива создать вспомогательный, упорядочив в нем элементы по возрастанию — и далее сравнивать методом половинного деления вспомогательного массива: если элемент первого, соответствующий [примерно] среднему элементу второго, меньше — то на следующем шаге брать середину верхней половины вспомогательного, если больше — середину нижней половины, и т.д., каждый раз отсекая уже проанализированные ненужные половинки. При совпадении же — выполнить действие и перейти к следующему элементу первого массива, прервав сравнение текущего. Или проиндексировав второй массив — что по времени поиска даст примерно одно и то же. Ох, сейчас корифеи бить будут... |
------- Последний раз редактировалось mwz, 06-10-2018 в 11:16. Отправлено: 11:09, 06-10-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:21, 06-10-2018 | #3 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата mwz:
Медленнее по сравнению с копированием массива, сортировкой и последующим поиском он станет на довольно большом количестве элементов, а там может ещё и памяти не хватить. |
|
Последний раз редактировалось Busla, 06-10-2018 в 11:59. Отправлено: 11:52, 06-10-2018 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Busla, это всегда так: выбор наиболее эффективного метода зачастую зависит от нашего знания о деталях реализации конкретных сущностей, над которыми мы планируем производить ту или иную операцию.
|
|
Отправлено: 12:34, 06-10-2018 | #5 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:45, 06-10-2018 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2003/XP/2000 - [решено] Обработка массивов | Матвик | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 06-04-2011 12:52 | |
VBA - [решено] Обработка массивов | Матвик | Программирование и базы данных | 12 | 24-02-2011 16:25 | |
Теория - Комбинированный поиск массивов | Drago56 | Программирование и базы данных | 8 | 22-12-2010 22:59 | |
Перебор контролов | w3d1 | AutoIt | 8 | 04-09-2009 12:35 | |
Перебор в твиках! | lmn | Автоматическая установка Windows 2000/XP/2003 | 2 | 30-07-2005 02:47 |
|