Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include "iostream"
- #include "time.h"
- #include "stdlib.h"
- #include "stdio.h"
- #define Tam 10000
- #define posibles 20
- using namespace std;
- void cargaVector(int arr[Tam],int vector[Tam])//Carga el vector con numeros aleatorios
- {
- srand(time(NULL));
- for (int i = 0; i < Tam; i++)
- {
- arr[i] = rand() % posibles;
- }
- for (int i = 0; i < Tam; i++)//copia el arreglo p/q sea el mismo durante toda la ejecución
- {
- vector[i] = arr[i];
- }
- }
- void mostrarVector(int arr[Tam])
- {
- int aux = 0;
- for (int i = 0; i < Tam; i++)
- {
- cout << arr[i] << "\t";
- aux++;
- if (aux == 5)
- {
- cout << "\n";
- aux = 0;
- }
- }
- system("pause");
- }
- void buscarDato(int arr[Tam])
- {
- int dato, ref = 0;
- system("cls");
- cout << "Ingrese nro. a buscar \n";
- cin >> dato;
- for (int i = 0; i < Tam; i++)
- {
- if (arr[i] == dato)
- {
- if (ref == 0)
- cout << "El nro. ingresado (" << dato << ") se encuentra en la posición: \t" << i << "\t";
- else
- {
- cout << i << "\t";
- }
- ref++;
- }
- }
- if (ref==0)
- {
- cout << "El nro. ingresado (" << dato << ") no se encuentra en el vector. \n";
- }
- else
- {
- if(ref>1)
- cout << "El nro. ingresado (" << dato << ") se repite " << ref << " vez/veces en el vector. \n";
- }
- system("pause");
- }
- void bubbleSort(int arr[Tam], int tamaño)
- {
- int aux;
- for (int i = (tamaño - 1); i >= 0; i--)
- {
- for (int j = 1; j <= i; j++)
- {
- if (arr[j - 1] > arr[j])
- {
- aux = arr[j - 1];
- arr[j - 1] = arr[j];
- arr[j] = aux;
- }
- }
- }
- }
- void bubbleSortBidireccional(int arr[Tam], int tamaño)
- {
- int aux;
- for (int i = (tamaño - 1); i >= 0; i--)
- {
- for (int j = 1; j <= i; j++)
- {
- if (arr[j - 1] > arr[j])
- {
- aux = arr[j - 1];
- arr[j - 1] = arr[j];
- arr[j] = aux;
- }
- }
- for (int k = (tamaño-1); k >= 0 ; k--)
- {
- if (arr[k] < arr[k - 1])
- {
- aux = arr[k - 1];
- arr[k - 1] = arr[k];
- arr[k] = aux;
- }
- }
- }
- }
- void insertionSort(int arr[Tam], int tamaño)
- {
- int aux, i,j;
- for ( i = 1; i < (tamaño-1); i++)
- {
- aux = arr[i];
- j = i;
- while ((j>0)&&(arr[j-1]>aux))
- {
- arr[j] = arr[j - 1];
- j--;
- arr[j] = aux;
- }
- }
- }
- void shellSort(int arr[Tam], int tamaño)
- {
- int intervalo = (tamaño / 2), j;
- while (intervalo>0)
- {
- for (int i = intervalo; i < tamaño; i++)
- {
- j = (i - intervalo);
- while (j>=0)
- {
- int k = (j + intervalo);
- if (arr[j]<=arr[k])
- {
- j = (-1);
- }
- else
- {
- int x = arr[j];
- arr[j] = arr[k];
- arr[k] = x;
- j = (j - intervalo);
- }
- }
- intervalo = (intervalo / 2);
- }
- }
- }
- void Quick_Sort(int ARREGLO[Tam], int izq, int der)//Anda
- {
- int pivot, guarda_izq, guarda_der, pos_pivot;
- guarda_izq = izq;
- guarda_der = der;
- pivot = ARREGLO[izq];
- while (izq < der)
- {
- while ((ARREGLO[der] >= pivot) && (izq < der))
- der--;
- if (izq != der)
- {
- ARREGLO[izq] = ARREGLO[der];
- izq++;
- }
- while ((ARREGLO[izq] <= pivot) && (izq < der))
- izq++;
- if (izq != der){
- ARREGLO[der] = ARREGLO[izq];
- der--;
- }
- }
- ARREGLO[izq] = pivot;
- pos_pivot = izq;
- izq = guarda_izq;
- der = guarda_der;
- if (izq < pos_pivot)
- Quick_Sort(ARREGLO, izq, pos_pivot - 1);
- if (der > pos_pivot)
- Quick_Sort(ARREGLO, pos_pivot + 1, der);
- }
- void bucketSort(int arr[Tam])
- {
- int aux[posibles];
- for (int i = 0; i < posibles; i++)
- aux[i] = 0;
- for (int i = 0; i < Tam; i++)
- {
- if (arr[i]>0)
- {
- aux[arr[i]]++;
- }
- }
- int j = 0;
- for (int i = 0; i < posibles; i++)
- {
- while (aux[i]>0)
- {
- arr[j] = i;
- aux[i]--;
- j++;
- }
- }
- }
- void compTE(int arr[Tam],int vector[Tam],int tamaño)
- {
- clock_t inicio, fin;
- int met1, met2, izq = 0, der = (Tam - 1);
- double demora;
- char cont;
- system("cls");
- do{
- cout << "Indique entre que dos métodos desea comparar los tiempos de ejecución: \n";
- cout << "(Ingrese ambos números separados por un espacio) \n";
- cout << "*0" << "\t" << "BUBBLE SORT BIDIRECCIONAL \n";
- cout << "*1" << "\t" << "BUBBLE SORT \n";
- cout << "*2" << "\t" << "INSERTION SORT \n";
- cout << "*3" << "\t" << "SHELL SORT \n";
- cout << "*4" << "\t" << "QUICK SORT \n";
- cout << "*5" << "\t" << "BUCKET SORT \n";
- do{
- cin >> met1;
- cin >> met2;
- if (met1 == met2)
- cout << "No se puede comparar un metodo con si mismo \n";
- if (((met1<0 || met1>6) || (met2<0 || met2>6)) && met1 != met2)
- cout << "Uno de los valores o ambos estan fuera de los parametros \n";
- } while (met1 == met2 || (met1<0 || met1>6) || (met2<0 || met2>6));
- if ((met1 == 0 && met2 == 1) || (met1 == 1 && met2 == 0))
- {
- inicio = clock();
- bubbleSortBidireccional(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort Bidireccional el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- bubbleSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 0 && met2 == 2) || (met1 == 2 && met2 == 0))
- {
- inicio = clock();
- bubbleSortBidireccional(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- insertionSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Insertion Sort el vector se ordeno en: " << demora << "seg. \n";
- system("pause");
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 0 && met2 == 3) || (met1 == 3 && met2 == 0))
- {
- inicio = clock();
- bubbleSortBidireccional(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- shellSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Shell Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 0 && met2 == 4) || (met1 == 4 && met2 == 0))
- {
- inicio = clock();
- bubbleSortBidireccional(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- Quick_Sort(arr, izq, der);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Quick Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 0 && met2 == 5) || (met1 == 5 && met2 == 0))
- {
- inicio = clock();
- bubbleSortBidireccional(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort Bidireccional el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- bucketSort(arr);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bucket Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 1 && met2 == 2) || (met1 == 2 && met2 == 1))//aca
- {
- inicio = clock();
- bubbleSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- insertionSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Insertion Sort el vector se ordeno en: " << demora << "seg. \n";
- system("pause");
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 1 && met2 == 3) || (met1 == 3 && met2 == 1))
- {
- inicio = clock();
- bubbleSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- shellSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Shell Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 1 && met2 == 4) || (met1 == 4 && met2 == 1))
- {
- inicio = clock();
- bubbleSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- Quick_Sort(arr, izq, der);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Quick Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 1 && met2 == 5) || (met1 == 5 && met2 == 1))
- {
- inicio = clock();
- bubbleSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bubble Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- bucketSort(arr);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bucket Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 2 && met2 == 3) || (met1 == 3 && met2 == 2))
- {
- inicio = clock();
- insertionSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Insertion Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- shellSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Shell Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 2 && met2 == 4) || (met1 == 4 && met2 == 2))
- {
- inicio = clock();
- insertionSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Insertion Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- Quick_Sort(arr, izq, der);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Quick Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 2 && met2 == 5) || (met1 == 5 && met2 == 2))
- {
- inicio = clock();
- insertionSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Insertion Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- bucketSort(arr);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bucket Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 3 && met2 == 4) || (met1 == 4 && met2 == 3))
- {
- inicio = clock();
- shellSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Shell Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- Quick_Sort(arr, izq, der);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Quick Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 3 && met2 == 5) || (met1 == 5 && met2 == 3))
- {
- inicio = clock();
- shellSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Shell Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- bucketSort(arr);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bucket Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- else if ((met1 == 4 && met2 == 5) || (met1 == 5 && met2 == 4))
- {
- inicio = clock();
- Quick_Sort(arr, izq, der);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Quick Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- inicio = clock();
- bucketSort(arr);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "Con Bucket Sort el vector se ordeno en: " << demora << "seg. \n";
- for (int i = 0; i < Tam; i++)
- arr[i] = vector[i];
- }
- cout << "Realizar otra comparación? S/N \n";
- cin >> cont;
- system("cls");
- }while (cont == 's'||cont=='S' );
- }
- void busquedaBinaria(int arr[Tam],int izq, int der,int dato)
- {
- int medio = (izq + der) / 2;
- if (izq>der)
- {
- cout << dato << " no se encuentra en el vector. \n";
- system("pause");
- }
- else if (izq<=der&&arr[medio]==dato)
- {
- cout << "El dato (" << dato << ") se encuentra en la posicion "<< medio << " del vector. \n";
- system("pause");
- }
- else if (dato<arr[medio])
- {
- busquedaBinaria(arr, izq, (medio - 1),dato);
- }
- else if (dato>arr[medio])
- {
- busquedaBinaria(arr,(medio+1),der,dato);
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- clock_t inicio, fin;
- double demora;
- int tamaño = Tam, Switch, vector[Tam], arr[Tam], izq = 0, der = (Tam - 1);
- char vervec;
- cargaVector(arr,vector);
- do
- {
- cout << "SELECCIONE LA OPCIÓN DESEADA: \n";
- cout << "*1" << "_____" << "MOSTRAR CONTENIDO DEL VECTOR \n";
- cout << "*2" << "_____" << "BUSCAR UN NRO. EN EL VECTOR \n";
- cout << "*3" << "_____" << "ORDENAR VECTOR CON BUBBLE SORT \n";
- cout << "*4" << "_____" << "ORDENAR VECTOR CON BUBBLE SORT BIDIRECCIONAL \n";
- cout << "*5" << "_____" << "ORDENAR VECTOR CON INSERTION SORT \n";
- cout << "*6" << "_____" << "ORDENAR VECTOR CON SHELL SORT \n";
- cout << "*7" << "_____" << "ORDENAR VECTOR CON QUICK SORT \n";
- cout << "*8" << "_____" << "ORDENAR VECTOR CON BUCKET SORT \n";
- cout << "*9" << "_____" << "COMPARAR TIEMPOS DE EJECUCION \n";
- cout << "*0" << "_____" << "SALIR \n";
- do
- {
- cin >> Switch;
- if (Switch<0 || Switch>9)
- {
- cout << "Ingrese una opción válida entre 0 y 9. \n ";
- system("pause");
- }
- } while (Switch<0 || Switch>9);
- switch (Switch)
- {
- case 1:{
- mostrarVector(arr);
- break; }
- case 2:{
- int dato;
- system("cls");
- cout << "Ingrese nro. a buscar \n";
- cin >> dato;
- busquedaBinaria(arr, izq, der,dato);
- break; }
- case 3:{
- inicio = clock();
- bubbleSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "El vector se ordeno en: " << demora << "seg. \n";
- cout << "Ver el vector? S/N \n";
- cin >> vervec;
- if (vervec == 's' || vervec == 'S')
- mostrarVector(arr);
- break; }
- case 4:{
- inicio = clock();
- bubbleSortBidireccional(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "El vector se ordeno en: " << demora << "seg. \n";
- cout << "Ver el vector? S/N \n";
- cin >> vervec;
- if (vervec == 's' || vervec == 'S')
- mostrarVector(arr);
- break; }
- case 5:{
- inicio = clock();
- insertionSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "El vector se ordeno en: " << demora << "seg. \n";
- cout << "Ver el vector? S/N \n";
- cin >> vervec;
- if (vervec == 's' || vervec == 'S')
- mostrarVector(arr);
- break; }
- case 6:{
- inicio = clock();
- shellSort(arr, tamaño);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "El vector se ordeno en: " << demora << "seg. \n";
- cout << "Ver el vector? S/N \n";
- cin >> vervec;
- if (vervec == 's' || vervec == 'S')
- mostrarVector(arr);
- break; }
- case 7:{
- inicio = clock();
- Quick_Sort(arr, izq, der);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "El vector se ordeno en: " << demora << "seg. \n";
- cout << "Ver el vector? S/N \n";
- cin >> vervec;
- if (vervec == 's' || vervec == 'S')
- mostrarVector(arr);
- break; }
- case 8:{
- inicio = clock();
- bucketSort(arr);
- fin = clock();
- demora = (double)(fin - inicio) / CLOCKS_PER_SEC;
- cout << "El vector se ordeno en: " << demora << "seg. \n";
- cout << "Ver el vector? S/N \n";
- cin >> vervec;
- if (vervec == 's' || vervec == 'S')
- mostrarVector(arr);
- break; }
- case 9:{
- compTE(arr, vector, tamaño);
- break;
- }
- case 0:{
- return(0);
- }
- default:
- break;
- }
- system("cls");
- for (int i = 0; i < Tam; i++)//reestablece los valores de arr antes de ser ordenado
- {
- arr[i] = vector[i];
- }
- } while (true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement