Está en la página 1de 9

//Ordenamiento Shell //Codificado por sAfOrAs #include<iostream> #include"leearreglo.

h" using namespace std; #define largo 50 void ordenShell(int A[],int n) { int i, j, inc, temp; for(inc = 1 ; inc<n;inc=inc*3+1); while (inc > 0) { for (i=inc; i < n; i++) { j = i; temp = A[i]; while ((j >= inc) && (A[j-inc] > temp)) { A[j] = A[j - inc]; j = j - inc; } A[j] = temp; } inc/= 2; } } void main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); ordenShell(A,n); muestraCadena(n,A); }

//Quick Sort //Codificado por sAfOrAs #include <iostream> #define largo 100 #include"leearreglo.h" using namespace std; void quicksort(int A[],int izq, int der ) { int i, j, x , aux; i = izq; j = der; x = A[ (izq + der) /2 ]; do{ while( (A[i] < x) && (j <= der) ) { i++; } while( (x < A[j]) && (j > izq) ) { j--; } if( i <= j ) { aux = A[i]; A[i] = A[j]; A[j] = aux; i++; j--; } }while( i <= j ); if( izq < j ) quicksort( A, izq, j ); if( i < der ) quicksort( A, i, der ); } void main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); quicksort(A,0,n-1); muestraCadena(n,A); }

//Insercin Directa //Codificado por sAfOrAs #include<iostream> #include"leearreglo.h" using namespace std; #define largo 50 void insercionDirecta(int A[],int n) { int i,j,v; for (i = 1; i < n; i++) { v = A[i]; j = i - 1; while (j >= 0 && A[j] > v) { A[j + 1] = A[j]; j--; } A[j + 1] = v; } } void main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); insercionDirecta(A,n); muestraCadena(n,A); }

//Selection binary //Codificado por sAfOrAs #include<iostream> #include"leearreglo.h" using namespace std; #define largo 50 void insercionBinaria(int A[],int n) { int i,j,aux,izq,der,m; for(i=1;i<n;i++) { aux = A[i]; izq=0; der=i-1; while(izq<=der) { m=((izq+der)/2); if (aux<A[m]) der=m-1; else izq=m+1; } j=i-1; while(j>=izq) { A[j+1]=A[j]; j=j-1; } A[izq]=aux; } } void main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); insercionBinaria(A,n); muestraCadena(n,A); }

//Heap Sort //Codificado por sAfOrAs #include <iostream> #define max 100 using namespace std; int main() { int A[max],j,item,temp,i,k,n; cout<<"Ingresa la cantidad de elementos del arreglo: "; cin>>n; for(i=1;i<=n;i++) cin >> A[i]; for(k=n;k>0;k--) { for(i=1;i<=k;i++) { item=A[i]; j=i/2; while(j>0 && A[j]<item) { A[i]=A[j]; i=j; j=j/2; } A[i]=item; } temp=A[1]; A[1]=A[k]; A[k]=temp; } cout<<"El orden es:"<<endl; for(i=1;i<=n;i++) cout<<A[i] << endl; return 0; }

//Selection sort //Codificado por sAfOrAs #include<iostream> using namespace std; #include"leearreglo.h" #define largo 50 void seleccionsort (int A[], int n) { int min,i,j,aux; for (i=0; i<n-1; i++) { min=i; for(j=i+1; j<n; j++) if(A[min] > A[j]) min=j; aux=A[min]; A[min]=A[i]; A[i]=aux ; } } void main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); seleccionsort(A,n); muestraCadena(n,A); }

//Fuente en C: http://es.wikipedia.org/wiki/Ordenamiento_Radix

//Modificado a C++ : sAfOrAs #include<iostream> using namespace std; #include <math.h> #define NUMELTS 20 void radixsort(int x[], int n) { int front[10], rear[10]; struct { int info; int next; } node[NUMELTS]; int exp, first, i, j, k, p, q, y; /* Inicializar una lista vinculada */ for (i = 0; i < n-1; i++) { node[i].info = x[i]; node[i].next = i+1; } /* fin del for */ node[n-1].info = x[n-1]; node[n-1].next = -1; first = 0; /* first es la cabeza de la lista vinculada */ for (k = 1; k < 5; k++) { /* Suponer que tenemos nmeros de cuatro dgitos */ for (i = 0; i < 10; i++) { /*Inicializar colas */ rear[i] = -1; front[i] = -1; } /*fin del for */ /* Procesar cada elemento en la lista */ while (first != -1) { p = first; first = node[first].next; y = node[p].info; /* Extraer el ksimo dgito */ exp = pow(10, k-1); /* elevar 10 a la (k1)sima potencia */ j = (y/exp) % 10; /* Insertar y en queue[j] */ q = rear[j]; if (q == -1) front[j] = p; else node[q].next = p; rear[j] = p; } /*fin del while */ /* En este punto, cada registro est en su cola basndose en el dgito k

Ahora formar una lista nica de todos los elementos de la cola. Encontrar el primer elemento. */ for (j = 0; j < 10 && front[j] == -1; j++); ; first = front[j]; /* Vincular las colas restantes */ while (j <= 9) { /* Verificar si se ha terminado */ /*Encontrar el elemento siguiente */ for (i = j+1; i < 10 && front[i] == -1; i++); ; if (i <= 9) { p = i; node[rear[j]].next = front[i]; } /* fin del if */ j = i; } /* fin del while */ node[rear[p]].next = -1; } /* fin del for */ /* Copiar de regreso al archivo original */ for (i = 0; i < n; i++) { x[i] = node[first].info; first = node[first].next; } /*fin del for */ } /* fin de radixsort*/ int main(void) { int x[50] = {NULL}, i; static int n; cout<<"Cadena de nmeros enteros:\n"; for (n = 0;; n++) { cin>>x[n]; if(x[n]==-1) break; } if (n) radixsort (x, n); for (i = 0; i < n; i++) cout<<x[i]<<endl;; return 0; }

//Ordena el nmero de nmeros que usted quiera. //Codificado por: Danny Hemderson Saforas Contreras ??=include<iostream> using namespace std; int main() ??< int i,j,k,cn; int n??('cn'??); cout<<"Cantidad de numeros que desea Ingresar: ";cin>>cn; for(i=0;i<cn;i++) { cout<<"Ingrese cin>>n[i]; }

numero "<<i+1<<" : ";

for(i=1;i<cn;i++) { for(j=0;j<cn-i;j++) { if(n[j]>n[j+1]) {k=n[j+1]; n[j+1]=n[j]; n[j]=k;} } } for(i=0;i<cn;i++) { cout<<n[i]<<endl; } cin.ignore(); return 0; ??>

También podría gustarte