Se trata de rutinas que organizan una lista en cierto orden. Veamos el ejemplo del algoritmo más sencillo llamado Ordenación burbuja:
#include <stdio.h>
int main()
{
int n, c, d, swap;
printf("Entre el número de elementos\n");
scanf("%d", &n);
int array[n];
printf("Entre %d enteros\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1])
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
printf("Lista ordenada en orden ascendente:\n");
for ( c = 0 ; c < n ; c++ )
printf("%d\n", array[c]);
return 0;
}
Ejercicios:
- ¿Cómo invertimos el orden?
- Mejore el algoritmo anterior o consulte e implemente un algoritmo de ordenación mejor.
- Genere un arreglo de números aleatorios y pruebe su algoritmo con él.
Búsqueda
El algoritmo más obvio es comenzar por el principio del arreglo y "caminar" a través de él hasta encontrar el dato deseado:#include <stdio.h>
int main()
{
int search, c, n;
printf("Ingrese la cantidad de números\n");
scanf("%d",&n);
int array[n];
printf("Ingrese %d enteros\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
printf("Ingrese el número a buscar\n");
scanf("%d", &search);
for (c = 0; c < n; c++)
{
if (array[c] == search) /* if el elemento fue encontrado */
{
printf("%d Está en la posición %d.\n", search, c+1);
break;
}
}
if (c == n)
printf("%d no se encuentra en el arreglo.\n", search);
return 0;
}
Ejercicios
- Mejore o implemente un nuevo algoritmo de búsqueda y pruébelo con un arreglo de números aleatorios.
- ¿Mejoran los tiempos si el arreglo se encuentra previamente ordenado?
No hay comentarios:
Publicar un comentario