¿Una manera distinta de ordenar arreglos/vectores.-?

Iniciado por DanielPy, 3 Diciembre 2013, 21:03 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

Hola amigos.
Estoy en un verdadero inconveniente con esto de ordenar un arreglo, no pretendo redescubrir la rueda, simplemente estoy practicando y hace mucho tiempo se me antojó esta manera de ordenar pero no logro que funcione.-
Con respecto a la cantidad de elementos del arreglo y hacerlo en una función luego lo arreglo, el tema es que alguna mente iluminada me diga dónde está el error.-
Debo aclarar que en algunos casos funciona, me parece que el error se produce cuando el menor/mayor arrancan muy cerca de los extremos.-   

#include <stdio.h>

void mostrar(int numeros[]);


int main(void){
int numeros[] = {77,58,7,19,62,99,44,49,15,33};
int menor=9999, mayor=0, pos_men=0, pos_may=0, men_cam=0, may_cam=0,i, j=0, m=9;

printf("\n\n");
mostrar(numeros);
printf("\n\n");

for(i=0; i<5; i++){
men_cam = numeros[i];
may_cam = numeros[m];
for(j=i; j<=m; j++){
if(numeros[j] < menor){
menor = numeros[j];
pos_men = j;
}
if(numeros[j] > mayor){
mayor = numeros[j];
pos_may = j;
}
}
numeros[i] = menor;
numeros[pos_men] = men_cam;

numeros[m] = mayor;
numeros[pos_may] = may_cam;
mostrar(numeros);
printf("--> Menor=%d [%d] --- Mayor=%d [%d]", menor, pos_men+1, mayor, pos_may+1);
getchar();
menor=9999;
mayor=0;
m--;
}
printf("\n\n");
mostrar(numeros);

return 0;
}


void mostrar(int numeros[]){
int t;
printf("\n");
for(t=0; t<10; t++){
printf(" %3d ", numeros[t]);
}
}




Bueno espero ayuda.-
Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-