Добрый вечер
Подскажите пожалуйста как оптимально найти в массиве кусочек другого подмассива
Я сразу сделал через поиск первого элемента Search 1D array , и затем если находит проверяю остальные символы из подмассива.
Но проблема в том что таких первых элементов может быть несколько в массиве и не обязательно что это начало нашего подмассива
Т.е надо проверять первое совпадение, если за ним не совпадают остальные элементы подмассива то в Search 1D array делаем новый поиск уже с точки после нашего совпадение
опять проверяем остальные элемены.
Если не совпало опять сдвиг и новый поиск и так до конца массива
В таком варианте количество итераций в максимальном варианте будет равно количеству первых элементов подмассива
Это мой взгляд . возможно существует более простое или оптимальное решение?
поиск подмассива в массиве
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: поиск подмассива в массиве
Всё давно уже изобретено и выложено, достаточно лишь поискать.spirit писал(а):Подскажите пожалуйста как оптимально найти в массиве кусочек другого подмассива
how to search for array in another array ? (см. Filter Subarray - DBL.vi)
Либо можете использовать инструмент Filter 1D Array из палитры OpenG Array.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: поиск подмассива в массиве
Filter 1D Array из палитры OpenG Array фильтрует все элементы из списка "items to filter" не зависимо от того как они расположены во входном массиве, а не подмассив "items to filter" если он есть во входном массиве.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: поиск подмассива в массиве
spirit, преобразуйте массив в строку и ищите через Search/Split String себе на здоровье.
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: поиск подмассива в массиве
собрался уже предложить этот же вариант, но меня обогнали :)Borjomy_1 писал(а):spirit, преобразуйте массив в строку и ищите через Search/Split String себе на здоровье.
повёл сравнительный тест: искать в строке на три порядка выгоднее по времени.
поиск в массиве 10000 элементов выборки в 200шт.
для достоверности выборка берётся из хвоста массива.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: поиск подмассива в массиве
Может быть, ТСу такой вариант как раз подойдёт. Если нет, то можно так: если индексы отфильтрованного массива все > 0 и идут последовательно друг за другом, то получаем вхождение подмассива в массив. Но всё-таки проще заюзать первый вариант.Blackman писал(а):Filter 1D Array из палитры OpenG Array фильтрует все элементы из списка "items to filter" не зависимо от того как они расположены во входном массиве, а не подмассив "items to filter" если он есть во входном массиве.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 2 Ответы
- 326 Просмотры
-
Последнее сообщение BAS