Recordemos que la búsqueda secuencial se puede realizar sobre cualquier arreglo o vector, mientras que en la búsqueda binaria, el arreglo debe estar ordenado.
Aquí está un programa en C# con una función para cada búsqueda:
using System;
namespace Busqueda {
class Programa {
public static void Main (string [] Args){
int [] V = new int [20];
for (int i = 0; i < V.Length; ++i)
Console.WriteLine ("{0}: {1}", i, V [i] = (i + 1) * 2);
// Pruebas
for (int i = 0; i < V.Length; ++i){
Console.WriteLine (BusquedaSecuencial (V, V [i]));
Console.WriteLine (BusquedaBinaria (V, V [i]));
}
}
// Devuelve la posición de Elem en el vector V
// Si no lo encuentra, devuelve -1
public static int BusquedaSecuencial (int [] V, int Elem){
for (int i = 0; i < V.Length; ++i)
if (V [i] == Elem)
return i;
return -1;
}
// Devuelve la posición de Elem en el vector V
// Si no lo encuentra, devuelve -1
public static int BusquedaBinaria (int [] V, int Elem){
Answers & Comments
Verified answer
Recordemos que la búsqueda secuencial se puede realizar sobre cualquier arreglo o vector, mientras que en la búsqueda binaria, el arreglo debe estar ordenado.
Aquí está un programa en C# con una función para cada búsqueda:
using System;
namespace Busqueda {
class Programa {
public static void Main (string [] Args){
int [] V = new int [20];
for (int i = 0; i < V.Length; ++i)
Console.WriteLine ("{0}: {1}", i, V [i] = (i + 1) * 2);
// Pruebas
for (int i = 0; i < V.Length; ++i){
Console.WriteLine (BusquedaSecuencial (V, V [i]));
Console.WriteLine (BusquedaBinaria (V, V [i]));
}
}
// Devuelve la posición de Elem en el vector V
// Si no lo encuentra, devuelve -1
public static int BusquedaSecuencial (int [] V, int Elem){
for (int i = 0; i < V.Length; ++i)
if (V [i] == Elem)
return i;
return -1;
}
// Devuelve la posición de Elem en el vector V
// Si no lo encuentra, devuelve -1
public static int BusquedaBinaria (int [] V, int Elem){
int min = 0,
max = V.Length - 1,
mid = (min + max) / 2;
while (min < max){
if (V [mid] == Elem)
return mid;
if (V [mid] > Elem)
max = mid - 1;
else
min = mid + 1;
mid = (min + max) / 2;
}
if (V [min] == Elem)
return min;
if (V [max] == Elem)
return max;
return -1;
}
}
}
Cordiales saludos.