Este programita, esta basado en punteros (es decir, es muy rapido, escalable y de gran clase), en principio ordena solo números, pero tal vez funcione hasta con letras. En caso de que no funcione con letras tendrás que encontrar una funcioncilla (que existe) que te pase el valor de cada letra a su código ascii y comparar dichos valores. (a=27, b=28..., etc...). Pues eso, espero que te sirva. Ciao. /******************************* METODO BURBUJA */ #include <stdio.h> #include <conio.h> #include <stdlib.h> main() { //INSTRUCCIONES AL USUARIO clrscr(); puts(" Este programa se encarga de ordenar una serie de numeros"); puts(" por medio de punteros"); //VARAIBLES int i; //CONTADOR DEL FOR int *ptr; //APUNTADOR QUE SIRVE COMO ARREGLO int dato; // EL VALOR TEMPORAL DE UN DATO PARASER GUARDADO EN EL APUNTADOR int LIM; // EL VALOR DE DATOS QUE EL USUARIO DESEA INTRODUCIR /* for(i=0; i<= 4; i++) { scanf("%d",&x); *(pa + i)=x; } */ //INTRODUCCION DE DATOS printf("¨Cuantos valores quieres ordenar?: "); scanf("%d",&LIM); //MAXIMO NUMERO DE DATOS QUE PUEDEN SER INTRODUCCIDOS if( LIM > 30 ) { puts("Demasiados numeros, no crees?"); getch(); return (0); } puts("\n\nIntroduce los numeros a ordenar: \n"); for(i=0; i<LIM; i++) { scanf("%d",&dato); *(ptr + i)=dato; } //PROCESO DE ORDENAMIENTO METODO BURBUJA //varibles para el ordenamiento int aux; int ciclo=0; // ///////////////////////////////// while(ciclo <= LIM) { for(i=0; i<LIM-1; i++) { if(*(ptr +i) > *(ptr +i +1)) { aux=*(ptr + i); *(ptr + i)=*(ptr + i +1); *(ptr +i + 1)= aux; } } ciclo++; } //IMPRESION DE RESULTADOS puts("\nEl orden es el siguiente:\n"); for(i=0; i< LIM; i++) { dato= *(ptr + i); printf(" %d, ",dato); } malloc(50); getch(); clrscr(); return (0); }