static void Main(string[] args)
{
string[] matriz = { "uno", "dos", "cinco", "seis", "cuatro", "nueve", "tres", "siete", "ocho", "diez" };
int a= Busqueda_S(matriz, "cinco");
Console.WriteLine("busqueda lineal = {0}", a);
int b = Busqueda_B(matriz, "cinco", false);
Console.WriteLine("busqueda binario = {0}", b);
Console.ReadLine();
}
//Busqueda secuencial:
//Si el dato buscado está devuelve la posición en la matriz
//Si no está devuelve -1
/// <summary>
///
/// </summary>
/// <param name="matriz">Matriz de datos</param>
/// <param name="dato">dato a buscar en la matriz</param>
/// <returns>Devuelve la posición del dato, y -1 si el dato no esta.</returns>
public static int Busqueda_S(string[] matriz, string dato)
{
if (matriz.Length == 0) return -1;
for (int i = 0; i < matriz.Length; i++)
{
if (matriz[i] == dato) return i;
}
return -1;
}
//Busqueda binaria:
//Si el dato buscado está devuelve la posición en la matriz
//Si no está devuelve -1
/// <summary>
///
/// </summary>
/// <param name="matiz">matriz de datos</param>
/// <param name="dato">dato a buscar en la matriz</param>
/// <param name="ordenado">indica si la matriz esta ordenada(true) o (false) si esta desordenada</param>
/// <returns>Devuelve la posición del dato, y -1 si el dato no esta.</returns>
public static int Busqueda_B(string[] matiz, string dato, bool ordenado)
{
if (!ordenado) Ordenar(matiz);
if (matiz.Length == 0) return -1;
int mitad, inf = 0, sup = matiz.Length - 1;
do
{
mitad=(inf + sup)/2;
if (dato.CompareTo(matiz[mitad]) > 0) inf = mitad + 1;
else sup=mitad-1;
}
while(matiz[mitad] != dato && inf <= sup);
if(matiz[mitad]== dato)
return mitad;
else
return-1;
}
//ordenamos (metodo de la burbuja)
private static void Ordenar(string[] matriz)
{
string aux;
int i, num_elem = matriz.Length;
bool s = true;
while (s && (num_elem > 0))
{
s = false;
for (i = 1; i < num_elem; i++)
{
if (matriz[i - 1].CompareTo(matriz[i]) > 0 )
{
aux = matriz[i - 1];
matriz[i - 1] = matriz[i];
matriz[i] = aux;
s = true;
}
}
}
}
}