|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
||||||
Самый быстрый метод поиска в массиве12.03.2015, 10:04. Показов 56050. Ответов 70
Метки нет (Все метки)
Пишу в Excel макрос. По условию имею массив около 1 000 000 записей, каждая запись представляет из себя строку:
формата - [|АНАЛИТИЧЕСКОЕ|89938|/;5951;1;/|], это пример. В первых двух вертикальных линиях ||,в строках массива записаны разные слова. Поиск осуществляется среди этих слов Написал код
hms - количество всех элементов в массиве Mslov p - результат поиск, если -1, то записи с данным словом в массиве нет, если <> -1, то по значению psk в теле основной программы вызывается вся строка. Код работает крайне медленно, есть ли возможность ускорить... поиск методов определения индекса заданного (не чётко) элемента массива ничего не дал.
0
|
||||||
| 12.03.2015, 10:04 | |
|
Ответы с готовыми решениями:
70
Самый быстрый алгоритм на с++ для поиска изображений с погрешностью Самый быстрый метод сортировки
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
||
| 12.03.2015, 14:49 [ТС] | ||
|
0
|
||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 12.03.2015, 15:56 | |
|
Вместо позиции в массиве в словаре можно писать номера в значениях.
Или думаю тут будет удобно так - из строки |ПРОДВИНУТОСТЬЮ|92239|/;2;1;/| создать 3 словаря: 1 - ключ "ПРОДВИНУТОСТЬЮ", значение "номер статуса" 2 - ключ "ПРОДВИНУТОСТЬЮ", значение 92239 3 - ключ "ПРОДВИНУТОСТЬЮ", значение /;2;1;/ ну или второй ключ "ПРОДВИНУТОСТЬЮ", значение 92239/;2;1;/ Теперь при анализе по ключу легко без лишних операций меняем любое зависимое значение. А в финале можно выгрузить первый словарь в массивы или двумерный массив, отсортировать по собранным статусам/частоте/иличтотамбудет, или выгрузить на лист и разобрать глазами. Далее снова пройтись циклом по ключам (взять с листа в массив) и сформировать итоговый текст (словари делать публичными, или промежуточно тоже выгрузить на лист или в файл).
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
|
| 12.03.2015, 16:38 [ТС] | |
|
Ок. Благодарю. Буду пробовать!
...и всё же надеюсь на поиск в массиве. Добавлено через 18 минут Мысль о переносе массива в словарь и работы там, привела меня к мысли сбросить весь массив в ListBox и искать там, но почему-то не работает ListBox.FindString("|слово поиск|"), результат даёт 0, хотя слово искомое там есть.
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 12.03.2015, 17:16 | |
|
А что это за ListBox.FindString? Где это?
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
||
| 12.03.2015, 17:24 [ТС] | ||
|
https://msdn.microsoft.com/en-... t1818.aspx Но не работает и ListBox1.Items.IndexOf(), хотя весь список ListBox1.Clear ListBox1.List = Mslov Выводится очень быстро. Список разместил на страничку. Затык похоже в моих любительских мозгах окончательный.
0
|
||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 12.03.2015, 17:36 | |
|
Это вроде как .NET Framework 4.5, в VBA такого нет.
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
|
| 12.03.2015, 17:37 [ТС] | |
|
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 12.03.2015, 17:40 | |
|
Такого тоже нет в VBA.
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
||
| 12.03.2015, 17:48 [ТС] | ||
|
0
|
||
|
Модератор
|
|
| 12.03.2015, 18:39 | |
|
Словарь - хеш таблица. Ищи на форуме я полностью исследовал ее работу.
Сортировка словаря методом реконструкции
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
|
| 12.03.2015, 22:31 [ТС] | |
|
Пришлось поменять ListBox на ComboBox, так же передаю ему массив Mslov
ComboBox.List=Mslov В ComboBox можно дописывать строку - элемент в начало списка, но определение индекса по заданному элементу, осуществляется в ComboBox.ListIndex при его активации в списке, может кто знает как в ComboBox определить индекс заданного элемента из списка без его активации, т.е. программно.
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
|||||||
| 16.03.2015, 21:58 [ТС] | |||||||
0
|
|||||||
|
|
||
| 17.03.2015, 09:17 | ||
|
Я когда то писал поиск миллиона значений на миллион, выполнялось это более 12 часов. После того как описал всё через словари и массивы переменных, срок выполнения сократился до 10 минут.
0
|
||
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
||
| 17.03.2015, 09:21 [ТС] | ||
|
0
|
||
|
|
|||||||
| 17.03.2015, 09:32 | |||||||
0
|
|||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 17.03.2015, 09:57 | |
|
Find работает только с диапазоном. По массиву можно использовать Index(), но простой перебор массива быстрее, и заметно быстрее.
1
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
|
| 17.03.2015, 10:57 [ТС] | |
|
Благодарю, всех за ликбез. Придётся в самом деле, похоже, перейти в словарь.
Быстрее в VB окромя перебора нет!
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 17.03.2015, 11:12 | |
|
Я там выше перепутал - не INDEX(), а MATCH()!
А когда перейдёте на словарь - как раз от перебора избавитесь.
0
|
|
|
2 / 3 / 1
Регистрация: 26.02.2015
Сообщений: 198
|
|
| 17.03.2015, 11:14 [ТС] | |
|
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 17.03.2015, 11:22 | |
|
Кажется там осталось ограничение как в 2003 версии, точно не знаю т.к. не использую.
0
|
|
| 17.03.2015, 11:22 | |
|
Быстрый Алгоритм поиска 2х мерного подмассива в 2х мерном массиве
Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя) Самый быстрый сервер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|