Ejercicio 5 Ordenar Arreglo.

Ejercicio 5 Ordenar Arreglo.

de Bruno Alejandro Casco Alarcon -
Número de respuestas: 3

Buenas, escribí un procedimiento para ordenar el arreglo de menor a mayor y un main para probarlo, pero no me está funcionando y aunque estuve un rato revisando no entiendo porqué, adjunto mi código:


void Ordenar(int arreglo[], int largo)
{
int aux;
for (int i = 0; i <= largo -1; i++)
{
for (int j = i; j <= largo -1; j++)
{
if (arreglo[j] < arreglo[i])
{
aux = arreglo[i];
arreglo[i] = arreglo[j];
arreglo[j] = aux;
}
}
}
}

main()
{
int largo;
printf("Ingrese el largo del arreglo: ");
scanf("%d/n", &largo);
int arr[largo];
printf("Ingrese el arreglo de largo %d \n", largo);
for (int i = 0; i <= (largo -1); i++)
scanf("%d", &arr[i]);
Ordenar(&arr[largo], largo);
for (int j = 0; j <= (largo - 1); j++)
printf("%d ", arr[j]);
}

Al ejecutarlo en la salida me devuelve el mismo arreglo que ingresé, es decir:

Si ingreso: 4 3 2 1

En lugar de devolverme: 1 2 3 4

Me devuelve: 4 3 2 1

Agradezco si me pueden ayudar con esto y saludos.

En respuesta a Bruno Alejandro Casco Alarcon

Re: Ejercicio 5 Ordenar Arreglo.

de Ignacio Facello Marcotte -
Lo que le estás pasando a Ordenar es la dirección de arr[largo]. Es decir, estás pasandole un puntero a la dirección de memoria inmediatamente después del final del arreglo. El código después va y ordena todos los "enteros" que vienen después.
En respuesta a Ignacio Facello Marcotte

Re: Ejercicio 5 Ordenar Arreglo.

de Bruno Alejandro Casco Alarcon -
Era eso jajaja, no me había dado cuenta. Le pasé arr[0] y me anda todo bien. Muchas gracias!