#include<iostream>
using namespace std;
//Prototipo de funciones
void busquedaSecuencial(int n, int []); //Procedimiento para Realizar una Busqueda de tipo Secuencial
void busquedaBinaria(int n, int d[]); //Procedimiento para Realizar una Busqueda de tipo Binaria
void ordenamientoSeleccion(int n,int []); //Procedimiento para Realizar un Ordenamiento Metodo Seleccion
void ordenamientoBurbuja(int n,int []); //Procedimiento para Realizar un Ordenamiento Metodo Burbuja
void ordenamientoInsercion(int n, int []); //Procedimiento para Realizar un Ordenamiento Metodo Insercion
int main()
{
int opcion, n;
//Ingreso manual de un Arreglo
cout<<" ¿Cuántos Elementos Te Gustaria Ingresar?: "; //Definir el tamaño del arreglo
cin>>n;
int d[n];
for(int i = 0; i < n ; i++){ //Ingreso de cada elemento del arreglo
cout<<" Ingrese el valor: "<< i<<" : ";
cin>> d[i];
}
cout<<"\n Su Arreglo es: "; //Mostrar el arreglo ingresado
for(int i = 0; i < n ; i++){
cout<< d[i] <<" ";
}
cout<<endl;
//MENU
do{
//Elejir el programa que desea ejecutar
cout<<"\n 1. Búsqueda Secuencial"<<endl;
cout<<" 2. Búsqueda Binaria"<<endl;
cout<<" 3. Ordenamiento por Selección"<<endl;
cout<<" 4. Ordenamiento por el Método de Burbuja"<<endl;
cout<<" 5. Ordenamiento por Inserción"<<endl;
cout<<" Introduzca una opcion (1-5): ";
cin>>opcion;
switch (opcion)
{
case 1:
busquedaSecuencial(n,d); //Busqueda secuencial el orden del aareglo no importa
break;
case 2:
cout<<"\n NOTA: El Arreglo debe estar ordenado"<<endl; //Busqueda binaria es necesario que el arreglo este ordenado
busquedaBinaria(n,d);
break;
case 3:
ordenamientoSeleccion(n, d);
break;
case 4:
ordenamientoBurbuja(n,d);
break;
case 5:
ordenamientoInsercion(n,d);
break;
}
} while(opcion != 7);
}
//------------------------------------ PROGRAMA 1: BUSQUEDA SECUENCIAL --------------------------------------
void busquedaSecuencial(int n,int d[]){ //Va recorriendo por todo el arreglo, aqui no importa si esta arreglago o no
int i = 0,valor, nComparaciones = 0; //valor = numeroAbuscar
bool respuesta = false;
cout<<" Ingrese el Número a Buscar: "; //Pedir el numero que desea encontrar dentro del arreglo
cin>>valor;
while((respuesta == false) && (i<n)){ //Mientras el numeroAbucar no se enuentre
nComparaciones += 1;
if(d[i] == valor) //Recorremos el arreglo, si un elemento del arreglo es igual a numeroAbuscar
respuesta = true; //Se ha encontrado el numeroAbuscar
else if(valor > d[i]) //Si el numeroAbuscar no coincide con ningun elemento del arreglo
respuesta = false; //No se ha encontrado el numeroAbuscar
i++;
}
if(respuesta == false){
cout<<"\n El Número A Buscar No Existe en el Arreglo"<<endl;
}else{
cout<<"\n El Número Ha sido Encontrado en la Posición: "<< nComparaciones - 1<<endl; //Mostrar la posicion en la que se ha encontrado el numeroAbuscar
}
}
//------------------------------------ PROGRAMA 2: BUSQUEDA BINARIA ---------------------------------------
void busquedaBinaria(int n, int d[]){
int valor, primero, ultimo, medio; //valor = numeroAbuscar, primero = celda0 del arreglo, ultimo = celdan del arreglo, medio = celda de la mitad
cout<<" Ingrese el numero que desea buscar: "; //Pedir el numero que desea encontrar dentro del arreglo
cin>>valor;
primero = 0;
ultimo = n;
medio = (primero + ultimo)/2; //Calcular el numeroMedio del arreglo
while (primero <= ultimo){
if (d[medio] < valor){ //numeroAbuscar se encuentra al lado derecho del arreglo
primero = medio + 1; //Calculamos el numero valor de primero
} else if (d[medio] == valor){ //Ya se ha encontrado numeroAbuscar
cout<<"\n El Número Ha sido Encontrado en la Posición: "<<medio<<endl;
break;
} else{ //numeroAbuscar se encuentra al lado izquierdo del arreglo
ultimo = medio - 1;
}
medio = (primero + ultimo)/2; //Actualizamos el valor de mitad
} if (primero > ultimo) {
cout<< "\n El Número A Buscar No Existe en el Arreglo"<<endl;
}
}
//------------------------------------ PROGRAMA 3: ORDEN. SELECCION -----------------------------------------
void ordenamientoSeleccion(int n,int d[]){
for(int i = 0; i < n; i++){ //Recorre todo el arreglo desde la posición inicial hasta el final
for(int j = i + 1; j < n; j++){ //Recorre el arreglo desde una posición siguiente al inicio
if( d[i] > d[j]){
int aux = d[j]; //Uso de un auxiliar para el intercambio de los valores
d[j] = d[i];
d[i] = aux;
}
}
}
cout<<"\n Su Arreglo Ordenado es: "; //Mostrar el arreglo ordenado
for(int i = 0; i < n ; i++){
cout<< d[i] << " ";
}
cout<<endl;
}
//------------------------------------ PROGRAMA 4: ORDEN. BURBUJA -------------------------------------------
void ordenamientoBurbuja(int n, int d[]){
int aux;
for(int i = 1; i < n; ++i){ //Recorre todo el arreglo desde la posición inicial hasta el final
for(int j = 0; j < (n-i); j++){
if( d[j] > d[j+1]){
aux = d[j]; //Uso de un auxiliar para el intercambio de los valores
d[j] = d[j+1];
d[j+1] = aux;
}
}
}
cout<<"\n Su Arreglo Ordenado es: "; //Mostrar el arreglo ordenado
for(int i = 0; i < n ; i++){
cout<<d[i]<<" ";
}
cout<<endl;
}
//------------------------------------ PROGRAMA 5: ORDEN. INSERCION -----------------------------------------
void ordenamientoInsercion (int n, int d[n]){
int j, aux;
for(int i = 0; i < n ; i++){
j = i;
aux = d[i]; //Asignamos a aux el valor de cada posiciond del arreglo, para el intercambio de valores
while((j > 0) && (d [j-1] > aux)){ //Compara numero en el que se encuentre con su anterior
d[j] = d [j - 1];
j = j - 1;
}
d [j]= aux;
}
cout<<"\n Su Arreglo Ordenado es: "; //Mostrar el arreglo ordenado
for(int i = 0; i < n ; i++){
cout<< d[i]<<" ";
}
cout<<endl;
}
0 Comentarios