#include <cstdlib>
#include <ctime>
#include <iostream>
#include <vector>
#include <assert.h>
Namespaces | |
| namespace | std |
Clases | |
| class | Contenedor_Ordenable |
Clase abstracta cuyos hijos son contenedores que pueden ser ordenados
| |
| class | Lista_Ordenable |
Lista ordenable simple, compuesta de nodos, que almacena números enteros
| |
| class | Lista_Ordenable::Nodo |
Nodos de la "Lista_Ordenable". Más... | |
| class | Vector_Ordenable |
Vector ordenable que almacena enteros
| |
| class | Algoritmo_Ordenador |
Clase abstracta que se usa para derivar de ella los algoritmos que sirven para ordenar instancias de "Contenedor_Ordenable"
| |
| class | Ordenador_Burbuja |
Clase derivada de "Algoritmo_Ordenador" que implementa el método de ordenamiento por "Burbuja". Más... | |
| class | Ordenador_Burbuja_Optimizada |
Clase derivada de "Algoritmo_Ordenador" que implementa el método de ordenamiento por "Burbuja Optimizada". Más... | |
| class | Ordenador_Seleccion |
Clase derivada de "Algoritmo_Ordenador" que implementa el método de ordenamiento por "Selección". Más... | |
| class | Ordenador_QuickSort |
| class | Ordenador_MergeSort |
Definiciones | |
| #define | INCLUDE_iostream |
Funciones | |
| bool | Esta_Ordenado (const Contenedor_Ordenable &C) |
Retorna "true" cuando el contenedor "C" está ordenado no decrecientemente. | |
| int | main () |
| Rutina principal que elije, en cada iteración de su ciclo principal, un contenedor para almacenar valores (lista vs vector), y un algoritmo de ordenamiento (Burbuja vs Burbuja_Optimizada vs Seleccion). | |
Alejandro Di Mare <[email protected]>
Miguel Hidalgo S. 791572
Karol Cordero B. A21551
|
|
|
|
|
Retorna
00700 { 00701 unsigned i; 00702 for (i = 0; i < C.Dimension()-1; ++i) { 00703 if ( C.Es_Menor(i+1,i) ) { 00704 return false; 00705 } 00706 } 00707 return true; 00708 }
|
|
|
Rutina principal que elije, en cada iteración de su ciclo principal, un contenedor para almacenar valores (lista vs vector), y un algoritmo de ordenamiento (Burbuja vs Burbuja_Optimizada vs Seleccion). SE MODIFICO A VALOR 4 YA QUE EL MERGE SORT TIENE UN LOOP 00715 { 00716 Algoritmo_Ordenador * pOrdenador; 00717 Contenedor_Ordenable * pContenedor; 00718 srand( time(0) ); 00719 cout << endl << endl << endl; 00720 for (int i = 0; i < 5; ++i) { // Algoritmo_Ordenador 00721 for (int j = 0; j < 2; ++j) { // Contenedor_Ordenable 00722 00723 cout << endl; 00724 cout << "======================"; 00725 cout << "======================"; 00726 cout << "======================" << endl; 00727 00728 // Selecciona el algoritmo de ordenamiento 00729 switch ( i ) { 00730 case 0: pOrdenador = new Ordenador_Burbuja(); break; 00731 case 1: pOrdenador = new Ordenador_Burbuja_Optimizada(); break; 00732 case 2: pOrdenador = new Ordenador_Seleccion(); break; 00733 case 3: pOrdenador = new Ordenador_QuickSort(); break; 00734 case 4: pOrdenador = new Ordenador_MergeSort(); break; 00735 } 00736 00737 // Selecciona "Lista_Ordenable" o "Vector_Ordenable" como contenedor 00738 switch ( j ) { 00739 case 0: pContenedor = new Vector_Ordenable(20); break; 00740 case 1: pContenedor = new Lista_Ordenable(20); break; 00741 } 00742 00743 cout << "<<< " << 2*i+j+1 << " >>> => "; 00744 cout << pContenedor->Nombre() << " <===> "; 00745 cout << pOrdenador->Nombre() << endl; 00746 // Se imprime la lista desordenada generada al azar 00747 cout << endl << "[Sin orden]: "; 00748 pContenedor->ImprimaSe(); 00749 00750 if (i != 4) 00752 pOrdenador->Ordene( *pContenedor ); 00753 00754 cout << endl << "[Ordenados]: "; 00755 pContenedor->ImprimaSe(); 00756 /* 00757 if (! Esta_Ordenado( *pContenedor ) ) { 00758 cout << endl; 00759 cout << "ERRROR: El contenedor " << pContenedor->Nombre() << " NO está ordenado" << endl; 00760 assert( "ERRROR: El contenedor NO está ordenado" && false ); 00761 } 00762 */ 00763 // Destruye "pOrdenador" && "pContenedor" 00764 delete pOrdenador; 00765 delete pContenedor; 00766 } 00767 } 00768 return 0; 00769 }
|
1.4.4