Continuando con los métodos de búsqueda, seguimos con la busqueda secuencial pero ahora en un vector ordenado, lo cual tiene mas eficiencia que el mismo método pero en vector desordenado. Aquí la ventaja es de que como tu ya sabes que el vector ya esta ordenado de antemano, es más fácil y rapido detectar cuando el elemento no se encuentra dentro del vector. Pero esto no significa que este método sea el más rápido.

El algoritmo es el siguiente:

Se toma el elemento a buscar y se compara con cada una de las posiciones del vector donde esta el conjunto de datos.
Esto se hace dentro de un ciclo el cual dejará de girar cuando se encuentre un numero igual al buscado o cuando se termine el vector o cuando se detecte que un elemento dentro del vector es mayor que el buscado (en un vector ordenado ascendente).
Sí no se encontró el numero buscado, se envía un mensaje indicando que el elemento buscado no fue encontrado, de lo contrario haces lo que tu decidas con el elemento encontrado.

Aquí está el codigo en VB.Net

VB.NET:
  1. Public Class Form1
  2.     Dim vec(999) As Integer
  3.     Dim a As Integer
  4.  
  5.     'Esta funcion es el QuickSort y solo la usaremos para ordenar el vector
  6.     Private Function quicksort(ByVal vec() As Integer, ByVal primero As Integer, ByVal ultimo As Integer) As Array
  7.         Dim a, b, piv, Npiv, aux As Integer
  8.         piv = vec(primero) 'sacamos pivote
  9.         Npiv = primero
  10.  
  11.         For a = primero To ultimo
  12.             If a <> Npiv Then 'si el pivote no se esta queriendo comparar con el mismo pivote
  13.                 If vec(a) <piv Then
  14.                     'mandamos los numeros a la izquierda
  15.                     aux = vec(a)
  16.  
  17.                     'recorremos sub-vector (desde piv hasta vec(a))
  18.                     For b = a To Npiv + 1 Step -1
  19.                         vec(b) = vec(b - 1)
  20.                     Next
  21.  
  22.                     vec(Npiv) = aux   'colocamos numero menor a la izquierda de piv
  23.                     Npiv += 1         'actualizamos posicion de piv
  24.                 End If
  25.             End If
  26.         Next
  27.  
  28.         'enviamos recursivamente el vector a la izuierda de piv
  29.         If (Npiv - primero <> 0) Then 'si el sub-vector de la izquierda tiene elementos, entonces se hace recursividad
  30.             vec = quicksort(vec, primero, Npiv - 1)
  31.         End If
  32.  
  33.         'enviamos recursivamente el vector a la derecha de piv
  34.         If (ultimo - Npiv <> 0) Then 'si el sub-vector de la derecha tiene elementos, entonces se hace recursividad
  35.             vec = quicksort(vec, Npiv + 1, ultimo)
  36.         End If
  37.  
  38.         Return vec
  39.     End Function
  40.  
  41.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  42.         Dim rand As New Random
  43.         Dim cad As String = ""
  44.  
  45.         For a = 0 To 999  'generamos un vector de 1000 elementos con numeros aleatorios entre el 0 y el 3999
  46.             vec(a) = rand.Next(0, 4000)
  47.         Next
  48.  
  49.         quicksort(vec, 0, vec.Length - 1)   'ordenamos el vector
  50.  
  51.         For a = 0 To 999  'metemos el vector a una variable string para imprimirla en un cuadro de texto
  52.             cad &= vec(a) & vbNewLine
  53.         Next
  54.         txt.Text = cad   'imprimimos el vector en un cuadro de texto
  55.     End Sub
  56.  
  57.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  58.         Dim n As Integer = txtn.Text   '"n" es el elemento a buscar
  59.         r.Text = ""
  60.         a = 0 'nuestro contador
  61.         While (a <vec.Length)  'girar mientras el contador sea menor al largo del vector
  62.             If (n <vec(a)) Then   'si el numero buscado es menor al elemento dentro del vector en la posicion del contador, entonces significa que No se encontró el numero buscado
  63.                 a = vec.Length 'asignamos a nuestro contador, el largo del vector para provocar salida del ciclo
  64.             ElseIf (vec(a) = n) Then 'si el elemento dentro del vector en la posicion del contador es igual al elemento buscado
  65.                 r.Text = vec(a) & " esta en la posicion " & a   'imprimimos mensaje de "numero encontrado"
  66.                 a = vec.Length  'provocamos salida del vector
  67.             Else
  68.                 a += 1
  69.             End If
  70.         End While
  71.  
  72.         If r.Text.Length = 0 Then r.Text = "# no encontrado"  'si ya salimos del vector Y aun no se habia enviado mensaje de "numero encontrado", significa que no se encontro el numero
  73.  
  74.     End Sub
  75. End Class

Aquí te dejo el archivo completo para que te lo descargues ;)

Descarga

Saludos!