Métodos de ordenamiento codificados en c++ : Descargar los códigos de: http://wp.me/p7dBv-3s ORDENACIÓN POR SELECCIÓN ORDENACIÓN POR INSERCIÓN DIRECTA ORDENACIÓN POR INSERCIÓN BINARIA ORDENA…Descripción completa
#include #include #include /*Las siguientes funciones son el corazón del programa. La primera inserta los elementos de un array de tal modo que queden como un montículo. La segunda elimina sucesivamente la raiz del montículo */ void insertamonticulo(int *, int N); void eliminamonticulo(int *, int N); int main() { int *array; /*Un vector dinámico*/ int N; cout<<"Introduce el número de datos enteros a ordenar: "; cin>>N; array=new int[N+1]; /*El N+1 es por comodidad. Con eso de que en C++ todos los arreglos empiezan desde 0 y el heapsort presupone que empiezan desde 1, pues ignoro el elemento 0 del array y le aumento un elemento para dar cabida a un indice igual al número de elementos*/ int i; array[0]=-1; /*Una linea que puede omitirse. */ cout<<"\n"; /*El siguiente ciclo pide al usuario los numeros de 1 a N*/ for(i=1;i<=N;i++) { cout<<"Introduce el valor "<>array[i]; } /*Imprimo los numeros en el orden que ingreso el usuario*/ cout<<"\n Lista ingresada por el usuario:\n"; for(i=1;i<=N;i++) { cout<
cout<<"\n Despues de la funcion que elimina el monticulo:\n"; for(i=1;i<=N;i++) { cout<1 && band==1) { band=0; if (A[k]>A[k/2]) { aux=A[k/2]; A[k/2]=A[k]; A[k]=aux; k=k/2; /*El propio lenguaje se encarga de adaptar la parte entera de este tipo de divisiones entre enteros*/ band=1; } } } } void eliminamonticulo(int *A, int N) { /*Esta función elimina la raiz del monticulo en forma repetida.*/ int i, aux, izq, der, k, ap, band, mayor; for (i=N; i>1; i--) { aux=A[i]; A[i]=A[1]; izq=2; der=3; k=1; band=1; /*band es 1, osea verdadero*/ while (izq
A[k]=A[ap]; k=ap; } else { band=0; } izq=k*2; der=izq+1; } A[k]=aux; } }