0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
1 | |
Поиск в массиве13.12.2007, 13:58. Показов 35521. Ответов 24
Метки нет (Все метки)
Есть 2 поля (многозначных) такой зависимости:
"Иванов" "Петров" "Сидоров" "2" "5" "6" Задача Найти все документы Петрова и узнать значение в примере 5 Как я вижу, нужно перебирать документы, дальше ебаунтом смотреть сколько элеменов в поле, просматривать какждый элемент, и если совпало брать элемент с таким же номером из второго поля. Вопрос: еслть ли др. способ поиска в массивах?
0
|
13.12.2007, 13:58 | |
Ответы с готовыми решениями:
24
Поиск в одном массиве элементов, которых нет в другом массиве Элементы, которые присутствуют в массиве А, но отсутствуют в массиве В (сортировка - выбором, поиск - двоичный) В одномерном массиве состоящем из n вещественных элементов сделать бинарный поиск числа А в упорядоченном массиве Поиск заданного элемента в упорядоченном массиве(бинарный поиск) |
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
|
|
13.12.2007, 14:12 | 2 |
<!--QuoteBegin-LIGHT+14:12:2007, 13:45 -->
<span class="vbquote">(LIGHT @ 14:12:2007, 13:45 )</span><!--QuoteEBegin-->ебаунтом [snapback]89964" rel="nofollow" target="_blank[/snapback]?[/quote] раз уж на то пошло то Убаундом ;) :D :D все документы для петрова можно узнать по поиску db.Search( { my_field *= "Петров" } ) ну а дальше Ubound
0
|
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
|
|
13.12.2007, 14:17 | 3 |
Вместо ебаунда можно заюзать ArrayGetIndex
Я раньше побаивался этого метода, но последние коды подверждают, что работает достаточно хорошо.
0
|
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
|
|
13.12.2007, 14:22 | 4 |
и шо ? таки быстрее работает чм обычный проход по массиву?
0
|
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
|
|
13.12.2007, 14:26 | 5 |
А фик знает, надо зациклить 100000 раз и проверить.
Могу полагать, что чуток да Хотя хз...
0
|
0 / 0 / 0
Регистрация: 06.04.2008
Сообщений: 151
|
|
12.04.2010, 14:20 | 6 |
Сообщение от Omh
0
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
12.04.2010, 15:45 | 7 |
я не понял задачу точно...
но чем не устроит колекция энтрисов + навигатор? колекцию получаем по ключу а к навигатору приводим (ентрисы) для правильного значения по вьюшке с многозначными полями
0
|
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
|
|
12.04.2010, 16:38 | 8 |
Сообщение от lmike
Главная соль тут в этом:
Сообщение от amigolinx
0
|
0 / 0 / 0
Регистрация: 04.08.2008
Сообщений: 408
|
|
12.04.2010, 16:46 | 9 |
Сообщение от Omh
0
|
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
|
|
12.04.2010, 17:00 | 10 |
Ну это для тебя капитан очевидность, а lmike видимо не увидел.
Я по капиноочевидческой привычке и разжевал. Если затупил, парашу паращения, настроение просто отличное, попостить охота!
0
|
0 / 0 / 0
Регистрация: 03.02.2007
Сообщений: 821
|
|
15.11.2010, 16:45 | 11 |
Подыму эту темку с таким вопросом:
ArrayGetIndex - вернет первое вхождение в массив? т.е. (0) - фф (1) - йй (2) - кк (3) - йй т.е. ArrayGetIndex(array, "йй") = 1 или 3 ? Мне нужно последний. Если все-таки возвращает 1, то как найти последний? перебором?
0
|
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
|
|
15.11.2010, 16:54 | 12 |
да, ArrayGetIndex(array, "йй") = 1, перебором, и лучше с конца :gigi:
вроде все вопросы =)
0
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
15.11.2010, 16:55 | 13 |
мне не понятен смысл массивов с неуникальным ключём
0
|
0 / 0 / 0
Регистрация: 03.02.2007
Сообщений: 821
|
|
15.11.2010, 17:02 | 14 |
Сообщение от lmike
(0) Действие1 # 11-11-2010 (1) Действие2 # 12-11-2010 (2) Действие3 # 12-11-2010 (3) Действие2 # 13-11-2010 Дак вот, "Действие2" может выполняться несколько раз, нужно узнать последнюю дату его выполнения
0
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
15.11.2010, 17:13 | 15 |
записывать действия в обратном порядке
но ваш вариант - полюбасу преобразовывать в два массива, что автоматически делает выгодным собаковождение
0
|
0 / 0 / 0
Регистрация: 16.03.2008
Сообщений: 49
|
|
15.11.2010, 17:26 | 16 |
Уфф, ну и задача конечно, могу предложить слегка ракообразный способ на скрипте
Вкратце: сначала объединяем массив в стринг, ищем справа и режем назад, считаем что получилось Код
Function ArrayLastIndex (MyArray) as Long Dim tempstr As String Dim searchstr As String Dim newArray Dim delim As String delim = ";" разделитель, можно что угодно, лишь бы оно не находилось в значении поля searchstr = "my name" что искать tempstr = Join(MyArray, delim) объединяем массив в стринг проверяем а есть ли это значение вообще if InStr(tempstr, searchstr)>0 Then tempstr = Strleftback(tempstr, searchstr) if tempstr="" Then если то что мы ищем является первым значением ArrayLastIndex = 0 Else NewArray= Split(tempstr, delim) ArrayLastIndex = Ubound(NewArray) End If Else заглушка если этого значения нету вообще ArrayLastIndex =-1 End If End Function
0
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
15.11.2010, 17:29 | 17 |
Сообщение от nnikyshi
Код
v:="Действие1 # 11-11-2010": "Действие2 # 12-11-2010": "Действие3 # 12-11-2010": "Действие2 # 13-11-2010"; filtered:=@Trim(@Unique(@Right(@ReplaceSubstring(v;"Действие2 #";{$$});{$$}))); @Subset(filtered;-1);
0
|
0 / 0 / 0
Регистрация: 16.03.2008
Сообщений: 49
|
|
15.11.2010, 18:02 | 18 |
ну раз пошла такая малина, то такой вариант:
v:="Действие1 # 11-11-2010":"Действие2 # 12-11-2010":"Действие3 # 12-11-2010":"Действие2 # 13-11-2010"; searchstr:="Действие2 # 13-11-2010"; @If(@Contains(v; searchstr); @Elements(@Explode(@leftback(@Implode(v; ";"); searchstr); ";")); @Return(""))
0
|
0 / 0 / 0
Регистрация: 03.02.2007
Сообщений: 821
|
|
15.11.2010, 18:06 | 19 |
подождите, а чем плох допустим мой варант:
Код
i = 0 Forall n In History If Not ( Instr(n, "Действие2") = 0 ) Then iIndex = i End If i = i + 1 End Forall
0
|
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
|
||||||
15.11.2010, 18:12 | 20 | |||||
Проверяется массив сначала, если надо узнать последнее значение...
0
|
15.11.2010, 18:12 | |
15.11.2010, 18:12 | |
Помогаю со студенческими работами здесь
20
Поиск заданного элемента в упорядоченном массиве (бинарный поиск) Поиск числа в двумерном массиве (бинарный поиск) Поиск в массиве. Время, затраченное на поиск. Поиск подмассива в массиве. Поиск значения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |