Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: поиск в двумерном массиве? Добавлено: 24.08.09 12:50  

Автор вопроса:  Vadim
Имеется двумерный массив
Dim Ar1(5,700) As Integer

Необходимо выполнить поиск значения по первому стлобцу массива - получить индекс значения в первом столбце.
Думал применить метод
Array.IndexOf
. Но он для одномерных массивов.
Нужно ли создать дополнительный одномерный массив и скопировать в него значения первого столбца исходного массива, а потом уже сделать поиск с помощью Array.IndexOf?
Или можно как-то сразу указать в методе Array.IndexOf для поиска первый столбец исходного массива?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #1
Добавлено: 24.08.09 14:28
в школе уже алгоритмы не учат штоль
  1. Dim i As Integer = -1
  2. For j As Integer = 0 To 700
  3.     If Ar1(1, j) = 5 Then i = j : Exit For
  4. Next

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 24.08.09 14:54
Медленно.

Ответить

Номер ответа: 3
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 24.08.09 19:22
если ты думаешь, что микрософт сделала в IndexOf что-то быстрее, чем линейный перебор, то ты заблуждаешься:
  1. Dim objArray As Object() = TryCast(array,Object())
  2.     Dim num3 As Integer = (startIndex + count)
  3.     If (Not objArray Is Nothing) Then
  4.         If (value Is Nothing) Then
  5.             Dim i As Integer
  6.             For i = startIndex To num3 - 1
  7.                 If (objArray(i) Is Nothing) Then
  8.                     Return i
  9.                 End If
  10.             Next i
  11.         Else
  12.             Dim j As Integer
  13.             For j = startIndex To num3 - 1
  14.                 Dim obj2 As Object = objArray(j)
  15.                 If ((Not obj2 Is Nothing) AndAlso obj2.Equals(value)) Then
  16.                     Return j
  17.                 End If
  18.             Next j
  19.         End If
  20.     Else
  21.         Dim k As Integer
  22.         For k = startIndex To num3 - 1
  23.             Dim obj3 As Object = array.GetValue(k)
  24.             If (obj3 Is Nothing) Then
  25.                 If (value Is Nothing) Then
  26.                     Return k
  27.                 End If
  28.             ElseIf obj3.Equals(value) Then
  29.                 Return k
  30.             End If
  31.         Next k
  32.     End If
  33.     Return (lowerBound - 1)

Ответить

Номер ответа: 4
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #4
Добавлено: 24.08.09 19:38
Ну... можно бинарным деревом, например.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам