Algoritmia - programas en c++

 
Vista:

programas en c++

Publicado por yennifer (2 intervenciones) el 24/03/2007 23:32:41
necesito programas de metodos de ordenacion y busqueda pero que esten en c++
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:programas en c++

Publicado por BlueStalker (3 intervenciones) el 09/04/2007 22:53:28
Quicksort

#include <iostream>
using std::cout;
using std::endl;
#include <iomanip>
using std::setw;
#include <cstdlib>
#include <ctime>
const int tamano = 10, MAXIMO = 1000;
void quicksort( int * const, int, int );
void swap( int * const, int * const );
int main()
{
int arregloAordenar[ tamano ] = { 0 };
int loop;
srand( time( 0 ) );
for ( loop = 0; loop < tamano; ++loop )
arregloAordenar[ loop ] = rand() % MAXIMO;
cout << "Los valores del arreglo antes de ordenarse son:\n";
for ( loop = 0; loop < tamano; ++loop )
cout << setw( 4 ) << arregloAordenar[ loop ];
cout << "\n\n";
if ( tamano == 1 )
cout << "El arreglo esta ordenado: " << arregloAordenar[ 0 ] << '\n';
else {
quicksort( arregloAordenar, 0, tamano - 1 );
cout << "Los valores del arreglo ordenado son:\n";
for ( loop = 0; loop < tamano; ++loop )
cout << setw( 4 ) << arregloAordenar[ loop ];
cout << endl;
}
return 0;
}
void quicksort( int * const arreglo, int first, int last )
{
int particion( int * const, int, int );
int posicionActual;
if ( first >= last )
return;
posicionActual = particion( arreglo, first, last );
quicksort( arreglo, first, posicionActual - 1 );
quicksort( arreglo, posicionActual + 1, last );
}
int particion( int * const arreglo, int izquierda, int derecha )
{
int posicion = izquierda;
while ( true ) {
while ( arreglo[ posicion ] <= arreglo[ derecha ] && posicion != derecha )
--derecha;
if ( posicion == derecha )
return posicion;
if ( arreglo[ posicion ] > arreglo[ derecha ]) {
swap( &arreglo[ posicion ], &arreglo[ derecha ] );
posicion = derecha;
}
while ( arreglo[ izquierda ] <= arreglo[ posicion ] && izquierda != posicion )
++izquierda;
if ( posicion == izquierda )
return posicion;
if ( arreglo[ izquierda ] > arreglo[ posicion ] ) {
swap( &arreglo[ posicion ], &arreglo[ izquierda ] );
posicion = izquierda;
}
}
}
void swap( int * const ptr1, int * const ptr2 )
{
int temp;
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}

Pero de nada te servira si no entiendes como funciona el metodo
asi ke te toca estudiar, supongo ke hay paginas mejores pero
no, busque bien =p
http://www.mailxmail.com/curso/informatica/programacionestructurada/capitulo21.htm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar