Ordenar datos con una función en un lenguaje de programación

Como hago para que los datos se vayan ordenando con una función, solo tengo esto e intentado varios ordenamientos pero no resultan
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void cargar(int f[20], int n);
void ordenar(int f[20], int n);
void main() {
clrscr() ;
int f[20];
int n ;
clrscr();
cout<<"Ingrese la dimension: ";
cin>>n;
cargar(f,n);
ordenar(f,n);
getch();
}
void cargar (int f[20],int n ){
for (int i=1 ; i<=n ;i++){
cout<<"elemento:["<<i<<"] " ;
cin>>f;
for (int j=i ; j>=1 ; j--){
cout<<"Los datos son"<<f[j]<<endl;
}
} }
void ordenar(int c[20],int n){
int tmp;
for (int i=1; i<=n-1;i++)
for(int j=i+1;j<=i;j++)
if(c>c[j])
{
tmp=c;
c=c[j];
c[j]=tmp;
}
}

1 Respuesta

Respuesta
1
El problema es simple. Estas usando para ordenar el vector de enteros el método de la burbuja. Lo que hace este método, es simplemente escoger un pivote, (el elemento i) y compararlo con el resto de elementos a los que va intercambiando cada vez que encuentra uno mayor. Una vez termina de procesar todos los elementos, tienes que el elemento pivote es el mayor de todos ellos. Entonces, toca escoger otro pivote, que sera el elemento i+1... y así sucesivamente. Digamos que el elemento mayor en cada momento es como una burbuja que va subiendo hacia las posiciones de los elementos mayores.
Entonces, para corregir tu algoritmo, solo tienes que poner en el segundo bucle del método ordenar, que la condición de final sea precisamente el final de todo el vector, n-1. Así pues quedara algo así:
void ordenar(int c[20],int n){
int tmp;
for (int i=1; i<=n-1;i++)
for(int j=i+1;j<=n-1;j++)
if(c>c[j])
{
tmp=c;
c=c[j];
c[j]=tmp;
}
}
Muy bien! Con esto ya estará. Otra cosa que he observado... es que los arrays en C, siempre empiezan en la intentar 0 y no en la 1. Considera esta opción porque evitaras líos, ahora mismo no estas ordenando todos los elementos, siempre te dejas uno. Asi pues, tiene que ser de 1 a n, o de 0 a n-1...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas