Académique Documents
Professionnel Documents
Culture Documents
1. Búsqueda Secuencial.
n = 10
v(n)
Ciclo i = 1 hasta n
Pedir v(i)
i=1
b=0
Pedir x
Mientras (i <= n) y (b =0)
Si x = v(i)
b=1
No
i=i+1
Si b = 0
Imprimir “No existe”
No
Imprimir “Encontrado”
Codigo:
class Program
{
static int n = 10, i, b, x;
static int[] V = new int[10];
static string otro;
Console.Read();
}
static void BusquedaSecuencial()
{
i = 0;
b = 0;
do
{
}
}
}
2. Busqueda Binaria
Vector Ordenado
Busqueda()
Li = 1
Ls = n
b=0
Pedir x
Mientras (Li <= Ls) y (b = 0)
Mitad = (Ls + Li) / 2
Si v(Mitad) = x
b=1
No
Si x > v(Mitad)
Li = Mitad + 1
No
Ls = Mitad – 1
Si b = 0
Imprimir “No existe”
No
Imprimir “Encontrado”
Codigo:
class Program
{
static int x, li, ls, b, n = 10, mitad;
static int[] V = new int[n];
static string otro;
static void Main(string[] args)
{
Console.WriteLine("Busqueda binaria");
for (int j = 0; j < n; j++)
{
Console.WriteLine("Inserte un numero entero");
V[j] = int.Parse(Console.ReadLine());
}
Ordenar(V);
Console.WriteLine("-----------------------------------------------------
--");
BusquedaBinaria();
}
static void BusquedaBinaria()
{
li = 0;
ls = n;
b = 0;
do
{
Console.WriteLine("Que numero desea buscar?");
x = int.Parse(Console.ReadLine());
while(li <= ls & b == 0
{
mitad = (li + ls)/2;
if (x == V[mitad])
{
b = 1;
}
else
{
if (x > V[mitad])
{
li = mitad + 1;
}
else
{
ls = mitad - 1;
}
}
}
if (b == 0)
{
Console.WriteLine("No existe el numero");
}
else
{
Console.WriteLine("Dato encontrado");
}
}while(otro == "si");
}
static void Ordenar(int[] vector)
{
Console.WriteLine("Busqueda binaria \n");
temporal = vector[j];
vector[j] = vector[k];
vector[k] = temporal;
}
}
Console.WriteLine("");
}
}
}
3. Búsqueda Arborescente
Pedir x
t = raíz
b=0
Si t = nulo
Imprimir “No existe”
No
Mientras (t <> nulo) y (b = 0)
Si x = t^.dato
b=1
No
Si x > t^.dato
t = t^.ramader
No
t = t^.ramaizq
Si b = 0
Imprimir “No existe”
No
Imprimir “Eureka si existe”
Código:
class Program
{
static Nodo raiz, t, temp;
static int x, b;
}
}
}
while (b == 0);
}
}
}
}
4. Búsqueda en listas
Si i = nulo
Imprimir “No existe”
No
temp = i
b=0
Mientras (temp <> nulo) y (b = 0)
Si x = temp^.dato
b=1
No
temp = temp^.dir
Si b = 0
Imprimir “No existe”
No
Imprimir “Dato encontrado”
Codigo:
class Program
{
static Nodo i, f, t, a, s, temp;
static int x, b;
do
{
Console.WriteLine("Ingrese el numero que desee buscar:");
x = int.Parse(Console.ReadLine());
Buscar();
Console.WriteLine("Desea buscar otro numero??");
otro = Console.ReadLine();
}
while(otro == "si");
}
static void Insertar()
{
//Primera vez
if (i == null)
{
i = new Nodo();
i.dato = x;
f = i;
f.dir = null;
}
else
{ //insercion lado derecho
if (x > f.dato)
{
t = new Nodo();
t.dato = x;
f.dir = t;
f = t;
f.dir = null;
}
else
{ //Insercion lado izquierdo
if (x < i.dato)
{
t = new Nodo();
t.dato = x;
t.dir = i;
i = t;
}
else
{ //Insercion en medio
a = i;
s = i.dir;
while (x > s.dato)
{
a = s;
s = s.dir;
}
t = new Nodo();
t.dato = x;
a.dir = t;
t.dir = s;
}
}
}
}
if (b == 0)
{
Console.WriteLine("El dato no existe");
}
else
{
Console.WriteLine("El dato {0} ha sido encontrado", x);
}
}
}
Console.WriteLine("");
}
}
5. Búsqueda Directa (Técnica de entrucamiento)
Ren = 0
dir = -1
BusquedaDirecta(NumControl, Nom)
Clave = NumControl
C = Clave
Si V(c).dir = -1
V(c).nombre = Nom
V(c).NoControl = NumControl
V(c).dir = C
No
VRepetidos(ren).nombre = Nom
VRepetidos(ren).NoControl = NumControl
VRepetidos(ren).dir = C
Ren = Ren + 1
Codigo:
class Program
{
public struct Alumno {
public String NoControl,Nombre;
public int Dir;
}
}