Вы находитесь на странице: 1из 3

Bsqueda Secuencial Indexada (Tabla ordenada) C# | Edwin Chavarria

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace index_numeros { class Program { //Estructura que guardara los valores en sub indeces para la busqueda struct index { public int pos; public int valor; } static int i,k,j,cant;//Variables globales private static void mostrar(int[] datos) { for (i = 1; i <= cant; i++) { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("{0}:", i); Console.ResetColor(); Console.Write("{0}\t ",datos[i]); } }//Imprime datos en pantalla private static void ordenar(int[] datos) { //Metodo de Buebja //Variables auxiliares int auxcod; //Comienzo del ordenamiento. for (i = 1; i <= cant; i++) { for (k = i + 1; k <= cant; k++) { if (datos[i] > datos[k]) { auxcod = datos[i]; datos[i] = datos[k]; datos[k] = auxcod; } } } }//Ordena los datos por metodo de burbuja private static int crearindex() { if (cant<= 1000)//tamao maximo de la tabla { for (j = 5; j <= 30; j++)//creando intervalos de 5 datos { if (cant % j == 0 && cant != j) return j; } } return -1; }

Estructura de datos

Edwin Chavarra

Bsqueda Secuencial Indexada (Tabla ordenada) C# | Edwin Chavarria

private static int BusqueIndex(int[] datos,int valor) { Console.WriteLine("\n\n\n----------------Creando index (intervalo)---------------------"); Console.ReadKey(); int intervalo = crearindex(),indexcant=0;//indexcant acumulador index[] indice = new index[cant];//variable que quarde los indice en estructura vector if (intervalo == -1) { Console.WriteLine("No se creo ningun intervalo adecuado....."); return -1; } else { Console.WriteLine("\nEl intervalo es: {0}", intervalo); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\t\tAsignando valores y Creando subindices "); Console.ResetColor(); Console.ReadKey(); for (i = 0; i <= cant; i = i + intervalo)//Asignar los valores correspondientes a los indices empezando de cero. { indice [indexcant].pos = i;//asiqnando posicion indice [indexcant].valor = datos[i];//asiqnando el valor. indexcant++; } Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\t\t\t......Buscando el dato\n"); Console.ResetColor(); Console.WriteLine("\tIntervalos creados y valor en el intervalo\n"); for (i = 0; i < indexcant; i++)//buscando el dato en los indices creados { Console.WriteLine("\n {0}, {1}", indice[i].pos, indice[i].valor); } Console.ReadKey();//Termina la asiqnacion de los intervalos //Buscando el dato Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\t\t\tBuscando......\n"); Console.ResetColor(); for (i = 0; i < indexcant; i++)//cantidad de index { Console.WriteLine("El Index(Intervalo) es: {0}\n", indice[i].pos); Console.WriteLine("\t\t--------- {0} >= {1}\n", indice[i].valor, valor);// comparando Console.ReadKey(); if (indice[i].valor >= valor)//comparando dato con un intervalo { Console.WriteLine("\t\t********** S I ****"); Console.ReadKey(); Console.WriteLine("Estamos buscando {0} entre el intervalo {1} a {2} \n", valor, indice[i].pos - intervalo, indice[i].pos); for (j = (indice[i].pos - intervalo); j <= indice[i].pos; j++) { Console.WriteLine("\t\t buscando en posicion {0} comparando {1}={2} \n", j, valor, datos[j]); Console.ReadKey();

Estructura de datos

Edwin Chavarra

Bsqueda Secuencial Indexada (Tabla ordenada) C# | Edwin Chavarria

if (datos[j] == valor) { Console.WriteLine("\t\t...... SI \n Console.ReadKey(); return j; } Console.WriteLine("\t\t...... N O"); } return -1; } Console.WriteLine("\t\t********** N O Console.ReadKey(); } return -1;

3
RETORNANDO VALOR DE {0}", j);

****Pasar al siguiente indice");

} } static void Main(string[] args) { Random Numero= new Random();// generar numeros aleatoriamente int[] Arreglo = new int[10000]; ;//declaramos el arreglo Console.Write("Cuantos datos desea ingresar:"); cant = Convert.ToInt32(Console.ReadLine()); //Ingresando a datos aleaoriamente for(i=1;i<=cant ;i++) { Arreglo[i] =Numero.Next(1,999);//(desde , Hasta) } //Datos manualemente /*for (i = 1; i <= cant; i++) { Arreglo[i] = Convert.ToInt32(Console.ReadKey()); }*/ //Mostrando datos Console.WriteLine("\n\n\n-----------------------------------------------"); mostrar(Arreglo); Console.ReadKey(); Console.WriteLine("\n\n\n----------------Ordenado---------------------"); ordenar(Arreglo); mostrar(Arreglo); Console.Write("\n\n\nIngrese el dato que desea buscar:"); int buscar = Convert.ToInt32(Console.ReadLine()); if (BusqueIndex(Arreglo, buscar) != -1) Console.WriteLine("{0} se encuentra en la posicin: {1}",buscar, j); else Console.WriteLine("{0} no se encuentra en la lista", buscar); // busquedaindex(n, codigo, dato); Console.ReadKey(); Console.ReadKey(); } } }

Estructura de datos

Edwin Chavarra

Вам также может понравиться