• Jueves 9 de Mayo de 2024, 02:34

Autor Tema:  busquedas en c#  (Leído 11525 veces)

ferchometal

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: ec
    • Ver Perfil
busquedas en c#
« en: Martes 15 de Junio de 2010, 19:43 »
0
Hola que tal amigos... :hola:
soy nuevo en esto de la programacion... y estoy necesitando ayuda urgente...
porfa necesito que me ayuden hacer un programa que me permita buscar elementos en un vector(array) de 3 formas.. he leido y se que hay por el metodo de Binario, lineal y secuencial.. aunque estos dos ultimos creo que son lo mismo....
porfa necesito su ayuda... es para un deber que tengo que presentar....

ah me olvidaba.. el programa es solo en consola..
de antemano les quedo agradecido por su ayuda..

Saludos.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: busquedas en c#
« Respuesta #1 en: Martes 15 de Junio de 2010, 23:03 »
0
te dejo un ejemplo que realice hace tiempo. solo hay 2 el secuencial y el binario.
Si ves que en los dos metodos te da distinta la posición del lato buscado en la matriz, es porque el primero buscamos con la matriz desordenada, y en el segundo (si no esta ordenada) la ordenamos, por lo que los datos cambian de posición en la matriz:

Código: C#
  1.  static void Main(string[] args)
  2.         {
  3.             string[] matriz = { "uno", "dos", "cinco", "seis", "cuatro", "nueve", "tres", "siete", "ocho", "diez" };
  4.  
  5.             int a= Busqueda_S(matriz, "cinco");
  6.             Console.WriteLine("busqueda lineal = {0}", a);
  7.  
  8.             int b = Busqueda_B(matriz, "cinco", false);
  9.             Console.WriteLine("busqueda binario = {0}", b);
  10.  
  11.             Console.ReadLine();
  12.         }
  13.  
  14.  
  15.         //Busqueda secuencial:
  16.         //Si el dato buscado está devuelve la posición en la matriz
  17.         //Si no está devuelve -1
  18.         /// <summary>
  19.         ///
  20.         /// </summary>
  21.         /// <param name="matriz">Matriz de datos</param>
  22.         /// <param name="dato">dato a buscar en la matriz</param>
  23.         /// <returns>Devuelve la posición del dato, y -1 si el dato no esta.</returns>
  24.         public static int Busqueda_S(string[] matriz, string dato)
  25.         {
  26.             if (matriz.Length == 0) return -1;
  27.  
  28.             for (int i = 0; i < matriz.Length; i++)
  29.             {
  30.                 if (matriz[i] == dato) return i;
  31.             }
  32.             return -1;
  33.         }
  34.  
  35.         //Busqueda binaria:
  36.         //Si el dato buscado está devuelve la posición en la matriz
  37.         //Si no está devuelve -1
  38.         /// <summary>
  39.         ///
  40.         /// </summary>
  41.         /// <param name="matiz">matriz de datos</param>
  42.         /// <param name="dato">dato a buscar en la matriz</param>
  43.         /// <param name="ordenado">indica si la matriz esta ordenada(true) o (false) si esta desordenada</param>
  44.         /// <returns>Devuelve la posición del dato, y -1 si el dato no esta.</returns>
  45.         public static int Busqueda_B(string[] matiz, string dato, bool ordenado)
  46.         {
  47.             if (!ordenado) Ordenar(matiz);
  48.  
  49.  
  50.             if (matiz.Length == 0) return -1;
  51.             int mitad, inf = 0, sup = matiz.Length - 1;
  52.  
  53.             do
  54.             {
  55.                 mitad=(inf + sup)/2;
  56.                 if (dato.CompareTo(matiz[mitad]) > 0) inf = mitad + 1;
  57.                 else sup=mitad-1;
  58.             }
  59.             while(matiz[mitad] != dato && inf <= sup);
  60.  
  61.             if(matiz[mitad]== dato)
  62.                 return mitad;
  63.             else
  64.                 return-1;
  65.            
  66.  
  67.         }
  68.  
  69.  
  70.         //ordenamos (metodo de la burbuja)
  71.         private static void Ordenar(string[] matriz)
  72.         {
  73.             string aux;
  74.             int i, num_elem = matriz.Length;
  75.             bool s = true;
  76.  
  77.             while (s && (num_elem > 0))
  78.             {
  79.                 s = false;
  80.                 for (i = 1; i < num_elem; i++)
  81.                 {
  82.                     if (matriz[i - 1].CompareTo(matriz[i]) > 0 )
  83.                     {
  84.                         aux = matriz[i - 1];
  85.                         matriz[i - 1] = matriz[i];
  86.                         matriz[i] = aux;
  87.                         s = true;
  88.                     }
  89.                 }
  90.             }
  91.  
  92.         }
  93.     }
  94.  

espero te sea util

ferchometal

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: ec
    • Ver Perfil
Re: busquedas en c#
« Respuesta #2 en: Miércoles 16 de Junio de 2010, 19:50 »
0
que tal tanke... te agradezco por tu ayuda.. pero sinceramente no comprendo tu ejemplo...
mira aqui te paso mas o menos como es lo que quiero... espero y me puedas ayudar...

estos son los puntos:
1: una vez que ingrese la cantidad de elementos.. me los muestre de una... y no estar ingreasandolos uno por uno como tengo yo ahi.
me imagino que se debe utilizar el random.. pero hay un detalle con esto.. que no tienen que repetirse los numeros

2:  y en el menu que dice los metodos de busquedas solo implementarlos...

xfa ayudenme es de suma urgencia....!!!


Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Proyecto___avance
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             int[] numeros;
  12.             int numEle;
  13.             Console.SetCursorPosition(23, 0); Console.Write("PROYECTO INTEGRADOR");
  14.             Console.Write("nnEVALUACION DE 3 ALGORITMOS PARA LA BUSQUEDA DE ELMENTOS EN UN VECTOR");
  15.             Console.Write("nnnIngrese La Cantidad De Elementos: ");
  16.             numEle = Convert.ToInt32(Console.ReadLine());
  17.             numeros = new int[numEle];
  18.             llenarVector(numeros);
  19.             Console.Clear();
  20.             MenuOpciones();
  21.             Console.ReadKey();
  22.         }
  23.         static void llenarVector(int[] vector)
  24.         {
  25.             for (int i = 0; i <= vector.GetUpperBound(0); i++)
  26.             {
  27.                 Console.Write("ingrese el valor de: ");
  28.                 vector[i] = Convert.ToInt32(Console.ReadLine());
  29.             }
  30.         }
  31.         static void MenuOpciones()
  32.         {
  33.             Console.WriteLine("nSeleccione el Metodo de Búsqueda.");
  34.             Console.WriteLine("nn1 - Algoritmo de Busqueda #1");
  35.             Console.WriteLine("2 - Algoritmo de Busqueda #2");
  36.             Console.WriteLine("3 - Algoritmo de Busqueda #3");
  37.             Console.WriteLine("4 - Salir");
  38.             Console.Write("------------------------->>> ");
  39.  
  40.         }
  41.         }
  42.     }
  43. }
  44.