Страница: 1 |
|
Вопрос: поиск по массивам
|
Добавлено: 25.03.09 09:34
|
|
Автор вопроса: mixman13
|
Доброго времени суток.
Есть два массива:
massiv1(50,4)
massiv2(1500,7)
первые элементы это название, по которому нужно из второго массива вытащить остальные 6 значений для каждого элемента первого. Можно это как-то сделать через поиск во втором массиве, без переборки всех 1500 значений 50 раз?
Ответить
|
Номер ответа: 3 Автор ответа: fAndOrIn
Вопросов: 5 Ответов: 344
|
Профиль | | #3
|
Добавлено: 25.03.09 10:57
|
Про сортировку: вариантов масса, многое зависит и от того, где источник данных для этих массивов. Если Excel - сортируй прямо на листе. Могу также порекомендовать сортировку Хоара, например vbnet.ru/forum/show.aspx?id=182195&page=2 посты 21,23 (если с ней будут проблемы - обращайся, попробую помочь)
А поиск по массивам (отсортированным) может выглядеть примерно так- Option Base 1
- Dim M1(50, 4), M2(1500, 7)
-
- Sub F()
- Dim I As Long, J As Long
- J = 1
- For I = 1 To 50
- While M1(I, 1) > M2(J, 1)
- If J = 1500 Then Exit For
- J = J + 1
- Wend
- While M1(I, 1) = M2(J, 1)
- Debug.Print M2(J, 1) ,M2(J, 2),M2(J, 3),M2(J, 4),M2(J, 5),M2(J, 6),M2(J, 7)
- If J = 1500 Then Exit For
- J = J + 1
- Wend
- Next I
- End Sub
Предполагается, что массивы отсртированы по возрастанию первого ключа. То что заремировано может помочь при необходимости запомнить первые индексы М2 (результаты поиска).
Ответить
|
Страница: 1 |
Поиск по форуму