Está en la página 1de 9

ESTRUCTURA DE DATOS

MATERIAL DE APOYO UNIDAD 2

DTAC Jazmín Pérez Méndez

PROGRAMA QUE MUESTRA MENÚ PARA LLENAR, IMPRIMIR, ORDENAR 2 ARREGLOS ENTEROS DE
20 POSICIONES, ASÍ COMO BUSCAR UN VALOR EN AMBOS ARREGLOS

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

//ordena por el metodo burbuja


void Burbuja(int b[]){

bool interruptor = true;


int pasada, j,aux,cont=0;

// bucle externo controla la cantidad de pasadas

for (pasada = 0; pasada < 20 - 1 && interruptor; pasada++)

interruptor = false;

for (j = 0; j < 20 - pasada - 1; j++)


if (b[j] > b[j + 1])

// elementos desordenados, se intercambian


interruptor = true;

aux=b[j];
b[j]=b[j+1];
b[j+1]=aux;

cont=cont+1;

cout<<" El numero de iteraciones es: "<<cont<<"\n";

//ordena por el metodo de insercion


void Insercion(int b[]){

int i, j, aux, cont=0;


for (i = 1; i < 20; i++)

/* indice j es para explorar la sublista a[i-1]..a[0] buscando la posicion


correcta del elemento destino */

j = i;

aux = b[i];

// se localiza el punto de inserción explorando hacia abajo


while (j > 0 && aux < b[j-1])

// desplazar elementos hacia arriba para hacer espacio


b[j] = b[j-1];

j--;

b[j] = aux;
cont=cont+1;

cout<<" El numero de iteraciones es: "<<cont<<"\n";

// ordena por el metodo de seleccion


void Seleccion(int b[]){

/*

ordenar un array de n elementos de tipo double


utilizando el algoritmo de ordenación por selección

*/

int indiceMenor, i, j,aux, cont=0;

// ordenar a[0]..a[n-2] y a[n-1] en cada pasada


for (i = 0; i < 20 - 1; i++)

// comienzo de la exploración en índice i


indiceMenor = i;

// j explora la sublista a[i+1]..a[n-1]


for (j = i + 1; j < 20; j++)

if (b[j] < b[indiceMenor])


indiceMenor = j;

// sitúa el elemento mas pequeño en a[i]


if (i != indiceMenor){

aux=b[i];
b[i]=b[indiceMenor];
b[indiceMenor]=aux;

cont=cont+1;

cout<<" El numero de iteraciones es: "<<cont<<"\n";

//ordena por el metodo de Quicksort

void Quicksort(int b[], int primero, int ultimo){

int i, j, central,aux,cont=0;
double pivote;

central = (primero + ultimo) / 2;


pivote = b[central];

i = primero;
j = ultimo;
do

while (b[i] < pivote) i++;


while (b[j] > pivote) j--;
if (i <= j)

aux=b[i];
b[i]=b[j];
b[j]=aux;

i++;
j--;

cont++;

}while (i <= j);


if (primero < j)

Quicksort( b, primero, j); // mismo proceso con sublista izquierda


if (i < ultimo)

Quicksort( b, i, ultimo); //mismo proceso con la sublista derecha

//elimina sueldos repetidos


int main(){
int Arreglo1[20];
int Arreglo2[20];

int i, opcion, sueldo,opc;

int ban=0, primero=0, ultimo=19;


do{

cout<<"\n\n******MENU DE OPCIONES******\n";
cout<<"1. INGRESAR VALORES\n";

cout<<"2. IMPRIMIR SUELDOS\n";


cout<<"3. ORDENAR SUELDOS\n";
cout<<"5. BUSCAR SUELDO\n";

cout<<"9. SALIR\n";
cin>>opcion;
cout<<endl;

switch(opcion){

case 1: cout<<"1. INGRESAR VALORES DE ARREGLO 1 \n";


cout<<"2. INGRESAR VALORES DE ARREGLO 2\n";

cin>>opc;
switch(opc){

case 1://ciclo para llenar el arreglo


for(int i=0;i<20;i++){

cout<<"Ingresa valor " <<i+1<<": \n";

cin>>sueldo;
Arreglo1[i]=sueldo;

break;

case 2://ciclo para llenar el arreglo


for(int i=0;i<20;i++){

cout<<"Ingresa valor " <<i+1<<": \n";


cin>>sueldo;

Arreglo2[i]=sueldo;

break;

break;

case 2:cout<<"1. IMPRIMIR VALORES DE ARREGLO 1\n";


cout<<"2. IMPRIMIR VALORES DE ARREGLO 2\n";
cin>>opc;
switch(opc){

case 1://ciclo para imprimir sueldos


cout<<"VALORES DE ARREGLO 1\n";

for(int i=0;i<20;i++){

cout<<"$ "<<Arreglo1[i]<<"\n";

break;

case 2://ciclo para imprimir sueldos


cout<<"VALORES DE ARREGLO 2\n";

for(int i=0;i<20;i++){
cout<<"$ "<<Arreglo2[i]<<"\n";

break;

break;

case 3: cout<<"1. ORDENAR VALORES DEL ARREGLO 1\n";


cout<<"2. ORDENAR VALORES DEL ARREGLO 2\n";

cin>>opc;
switch(opc){

case 1:cout<<"1.METODO BURBUJA\n";


cout<<"2.METODO INSERCION\n";
cout<<"3.METODO SELECCION\n";
cout<<"4.METODO QUICKSORT\n";

cin>>opc;
switch(opc){

case 1://llamado de funcion


Burbuja(Arreglo1);
break;

case 2://llamado de funcion


Insercion(Arreglo1);

break;

case 3://llamado de funcion


Seleccion(Arreglo1);

break;

case 4://llamado de funcion


Quicksort(Arreglo1, primero, ultimo);
break;

break;

case 2:cout<<"1.METODO BURBUJA\n";


cout<<"2.METODO INSERCION\n";
cout<<"3.METODO SELECCION\n";
cout<<"4.METODO QUICKSORT\n";

cin>>opc;
switch(opc){

case 1://llamado de funcion


Burbuja(Arreglo2);
break;

case 2://llamado de funcion


Insercion(Arreglo2);

break;

case 3://llamado de funcion


Seleccion(Arreglo2);

break;

case 4://llamado de funcion


Quicksort(Arreglo2, primero, ultimo);
break;

break;

case 5:

break;

cout<<"1. Buscar valor en arreglo 1\n";


cout<<"2. Buscar valor en arreglo 2\n";
cin>> opc;

switch (opc){
case 1:

cout<< "Ingresa valor a buscar: ";


cin>> sueldo;

//ciclo para buscar el sueldo dentro del arreglo


for(int i=0;i<20;i++){

if (sueldo== Arreglo1[i]){

cout<< " El valor está en la posición:"<<i+1<<"\n";


ban=1;

if(ban==0){

cout<<"No se encontro el valor\n";

break;
case 2:

cout<< "Ingresa valor a buscar: ";


cin>> sueldo;

//ciclo para buscar sueldo dentro del arreglo


for(int i=0;i<20;i++){

if (sueldo== Arreglo2[i]){

cout<< " El valor está en la posición:"<<i+1<<"\n";


ban=1;

break;

if(ban==0){

cout<<"No se encontro el valor\n";

break;

while(opcion!=9); //salir

PROGRAMA PARA IMPLEMENTAR BÚSQUEDA LINEAL Y BÚSQUEDA BINARIA

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctime>
using namespace std;
int arreglo[] = {10,20,30,40,50,60,70,80,90,100};

int busquedas [10];


int VBuscar;

int i=1;

int tam = 10;


int cont = 0;
int main()

//búsqueda lineal

cout<<"dame el valor a buscar ";


cin>>VBuscar;

while ((i<=tam) && (arreglo[i]!=VBuscar))

if (i>tam)

i=i+1;
cont++;

else

cout<<"el valor"<<VBuscar<<"no está en el arreglo";

cout<<"la informacion está en la posicion"<<i+1<<endl;


cout<<"la cantidad de iteraciones fueron"<<cont<<endl;

//búsqueda binaria
int abajo = 0;

int arriba = 10;


i = 0;

int mitad =0;

cont = 0;

while (abajo<=arriba)
{

mitad = (abajo+arriba)/2;

if (arreglo[mitad]==VBuscar)

cont++;

cout<<"el valor fue encontrado en la posición"<<mitad<<endl;


cout<<"la cantidad de iteraciones fueron"<<cont<<endl;

else

break;

if (arreglo[mitad]>VBuscar)

else

arriba = mitad;

mitad = (arriba+abajo)/2;

if (arreglo[mitad]<VBuscar)

abajo = mitad;

mitad = (abajo+arriba)/2;

return 0;

También podría gustarte