Как осуществить поиск в массиве?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Как осуществить поиск в массиве?

Сообщение |kerish| » 28.08.2005 (Вс) 13:36

Дан огромный массив формата String. (Около 9000 записей).
Постоянно будет даваться определенная строка и необходимо будет узнать есть ли такая в массиве или нет. Как это осуществить побыстрее?
Перебор, типа:
for a = 1 to ubound(massiv)
if stroka = massiv(a)
next

наверное будет очень долгим.
Может есть какая-нибудь комманда для этого?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.08.2005 (Вс) 14:05

Коллекции есть.

Если массив отсортирован, бинарный поиск есть.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Сообщение Александр Дмитриев » 28.08.2005 (Вс) 15:40

Индексируй массив (если он у тебя, конечно, отсортирован, а это сделать обязательно будет нужно, иначе извращаться, гнаться за скоростью поиска будет тупо). То есть вставь в его конец информацию о том, в какой его части храниться какого типа информация; например, с такого-то места у него пошли элементы на букву А, и потом, когда программа будет искать, она по первой букве сразу перейдёт в нужное место массива.

newonline
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 115
Зарегистрирован: 13.08.2005 (Сб) 14:50
Откуда: Воронеж

Сообщение newonline » 28.08.2005 (Вс) 16:04

Не надо мудрить. Загони все в коллекцию. А твои индексы будут ключами. Да и конструкция:

For Each Item in TvoyaKollection
работает много быстрее, чем for i=1 to .....
Оно конечно да, ежели что как...а то ведь как получится, так вот вам и пожалуйста...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 7

    TopList