"Contenedor_Ordenable" es un vector de enteros de tamaño "Contenedor_Ordenable::_cantidad_de_elementos".
Diagrama de herencias de Vector_Ordenable

Tipos públicos | |
| typedef int | value_type |
| Tipo de valor almacenado en el contenedor. | |
Métodos públicos | |
| Vector_Ordenable (unsigned N) | |
Constructor que inserta "N" valores (aleatorios) en el contenedor. | |
| virtual | ~Vector_Ordenable () |
| Destructor. | |
| virtual void | Intercambie (int, int) |
| Intercambia los valores de los elementos que están en las posiciones [i] <=> [j]. | |
| virtual bool | Es_Menor (int, int) const |
Compara los elementos en las dos posiciones "i" && "j" del contenedor
| |
| virtual void | ImprimaSe () const |
Graba en "cout" todos los valores almacenados en el contendor
| |
| virtual const char * | Nombre () const |
| Nombre del contenedor. | |
| virtual int | Encuentra_pivote (int, int) |
| devuelve 0 si el contenedor tiene claves idénticas de otra forma, devuelve el indice de la mayor de las do claves diferentes de mas a la izquierda. | |
| virtual void | Particion (int, int, int) |
| divide al contenedor para que las claves menores que pivote estén a la izquierda y las claves mayores estén a la derecha | |
| virtual void | Mezclar (int, int, int) |
| realiza una mezcla en dos direcciones dado que toma dos contenedores ordenados como entrada y los combina para producir un contenedor ordenado de salida. | |
| virtual int | Get_valor (int) |
| devuelve el valor de la posición que ingresa como parámetro | |
| virtual void * | Get_direccion (int) |
| devuelve el puntero de la posicion ingresada como parámetro | |
| virtual int | Get_posicion (void *) |
| devuelve la posición dentro del contenedor de la direccion pasada como parametro se utiliza el puntero nulo para luego asinar tal puntero a cualquier otro puntero que apunte a un tipo baase arbitrario | |
| unsigned | Dimension () const |
Devuelve la cantidad de valores almacenados en el "Contenedor_Ordenable". | |
Atributos protegidos | |
| int | m_cantidad_de_elementos |
Cantidad de valores almacenados en el "Contenedor_Ordenable". | |
Atributos privados | |
| value_type * | m_vec |
"Contenedor_Ordenable" es un vector de enteros de tamaño "Contenedor_Ordenable::_cantidad_de_elementos".
|
|
Tipo de valor almacenado en el contenedor.
|
|
|
Constructor que inserta
00418 : Contenedor_Ordenable(N) { 00419 m_vec = new Contenedor_Ordenable::value_type [ m_cantidad_de_elementos ]; 00420 srand( time(0) ); 00421 00422 for (int i = 0; i < m_cantidad_de_elementos; ++i) { 00423 m_vec[i] = rand() % 100; 00424 } 00425 }
|
|
|
Destructor.
|
|
||||||||||||
|
Intercambia los valores de los elementos que están en las posiciones [i] <=> [j].
Implementa Contenedor_Ordenable. 00451 { 00452 value_type temp; 00453 temp = m_vec[i]; 00454 m_vec[i] = m_vec[j]; 00455 m_vec[j] = temp; 00456 }
|
|
||||||||||||
|
Compara los elementos en las dos posiciones
Implementa Contenedor_Ordenable.
|
|
|
Graba en
Implementa Contenedor_Ordenable. 00433 { 00434 value_type * p = m_vec; 00435 value_type * end = & m_vec[ m_cantidad_de_elementos ]; 00436 cout << "["; 00437 while (p != end) { 00438 cout << *p; 00439 if (p+1 != end) { // ¿último valor del vector? 00440 cout << " "; 00441 } 00442 p++; 00443 } 00444 cout << "]" << endl; 00445 }
|
|
|
Nombre del contenedor.
Implementa Contenedor_Ordenable.
|
|
||||||||||||
|
devuelve 0 si el contenedor tiene claves idénticas de otra forma, devuelve el indice de la mayor de las do claves diferentes de mas a la izquierda.
Implementa Contenedor_Ordenable. 00462 { 00463 return m_vec[((inicial+final)/2)-1]; 00464 }
|
|
||||||||||||||||
|
divide al contenedor para que las claves menores que pivote estén a la izquierda y las claves mayores estén a la derecha
Implementa Contenedor_Ordenable. 00466 { 00467 00468 int z=primero; 00469 int d=ultimo; 00470 00471 while(z<d) 00472 { 00473 while (m_vec[z-1] < pivote) 00474 ++z; 00475 00476 while (m_vec[d-1] > pivote) 00477 --d; 00478 00479 if(primero<=ultimo) 00480 { 00481 this->Intercambie(z-1,d-1); 00482 ++z; 00483 --d; 00484 } 00485 00486 } 00487 if (primero < d) 00488 Particion(primero,d,Encuentra_pivote(primero,d)); 00489 00490 if (z < ultimo) 00491 Particion(z,ultimo,Encuentra_pivote(z,ultimo)); 00492 }
|
|
||||||||||||||||
|
realiza una mezcla en dos direcciones dado que toma dos contenedores ordenados como entrada y los combina para producir un contenedor ordenado de salida.
Implementa Contenedor_Ordenable. 00494 { 00495 vector<value_type> m_temp; 00496 m_temp.reserve(derecha); 00497 int k=0; 00498 int i=izquierda; 00499 int j=centro+1; 00500 while ((i < (centro+1)) && ( j < derecha)) 00501 { 00502 if (m_vec[i-1] < m_vec[j-1]){ 00503 m_temp[k] = m_vec[i-1]; 00504 ++i; 00505 }else{ 00506 m_temp[k] = m_vec[j-1]; 00507 ++j; 00508 } 00509 ++k; 00510 }; 00511 00512 while (i < centro) 00513 { 00514 m_temp[k] = m_vec[i-1]; 00515 ++i; 00516 ++k; 00517 } 00518 00519 while (j < derecha) 00520 { 00521 m_temp[k] = m_vec[j-1]; 00522 ++j; 00523 ++k; 00524 } 00525 00526 for (k=0; k < derecha; ++k){ 00527 m_vec[k]= m_temp[k]; 00528 } 00529 00530 }
|
|
|
devuelve el valor de la posición que ingresa como parámetro
Implementa Contenedor_Ordenable. 00532 { 00533 return m_vec[valor-1]; 00534 }
|
|
|
devuelve el puntero de la posicion ingresada como parámetro
Implementa Contenedor_Ordenable. 00536 { 00537 value_type * pos=0; 00538 return pos; 00539 }
|
|
|
devuelve la posición dentro del contenedor de la direccion pasada como parametro se utiliza el puntero nulo para luego asinar tal puntero a cualquier otro puntero que apunte a un tipo baase arbitrario
Implementa Contenedor_Ordenable.
|
|
|
Devuelve la cantidad de valores almacenados en el
00048 { return m_cantidad_de_elementos; }
|
|
|
|
|
|
Cantidad de valores almacenados en el
|
1.4.4