SORT / ORDENACION.-
Es reagrupar un grupo de datos en una
secuencia especifica de orden
PROBLEMA:
En una Empresa el área de Recursos
Humanos requiere ordenar 3
números de empleados obteniendo la
siguiente salida.
Primera pasada:
{21,40,4,9,10,35} <-- Se cambia el 21 por el 40.
{21,4,40,9,10,35} <-- Se cambia el 40 por el 4.
{21,4,9,40,10,35} <-- Se cambia el 9 por el 40.
{21,4,9,10,40,35} <-- Se cambia el 40 por el 10.
{21,4,9,10,35,40} <-- Se cambia el 35 por el 40.
Segunda pasada:
{4,21,9,10,35,40} <-- Se cambia el 21 por el 4.
{4,9,21,10,35,40} <-- Se cambia el 9 por el 21.
{4,9,10,21,35,40} <-- Se cambia el 21 por el 10.
Ya están ordenados, pero para comprobarlo habría que acabar esta segunda
comprobación y hacer una tercera.
Variables:
Gobales.- Nivel programa
locales.- Nivel funcion
// Definimos una función donde A=arreglo y N=tamaño
int bubblesort(int A[],int N){
int i,j,AUX;
for(i=2;i<=N;i++){ //siguiente
for(j=N;j>=i;j--){ //anterior
if(A[j-1]>A[j]){ //si i > d intercambio
AUX=A[j-1]; //guardamos en AUX
A[j-1]=A[j]; //pasamos d a i
A[j]=AUX; //copiamos AUX en d
}
}
}
return 1;
} EI, Profesor Ramón Castro Liceaga
• Practica: Hacer un programa con Arreglos que ordene por el
método de la burbuja Bubblesort en forma ascendente un
vector de 10 números de empleados de una empresa.
Códificación :
main()
Pseudocódigo:
{
1.- Inicio
int A[10];
2.- Definir un vector de 10 números
llenavector(A,10); // es uma función
3.- Llenar el vector con los números printf("ORDENAMIENTO POR BURBUJA \n");
4.- Mostrar la salida de los números printf("Numeros a ordenar: \n");
capturados en desorden
salida(A,10); // es uma función
5.- Ordenar el vector por el método printf("\n\nNumeros ordenados: \n");
bubblesort
bubblesort(A,10); // es uma función
6.- Mostrar la salida con los números salida(A,10); // es uma función
ordenados del vector
getch();
}
• Ejemplo:
El algoritmo en pseudocódigo
// insert-sort.cpp
#include <stdio.h>
#include <stdlib.h>
main(){
int a[]={67,8,15,44,27,12,35};
int i,aux,k;
for(i=1;i<7;i++){
aux=a[i];
k=i-1;
while((k<i)&&(aux<a[k])){
a[k+1]=a[k];
k=k-1;}
a[k+1]=aux;}
for(i=0;i<7;i++){
printf("%i\n",a[i]);}
system("pause");
}
EI, Profesor Ramón Castro Liceaga
POR SELECCION
• Este algoritmo trabaja seleccionando el dato más pequeño
a ser ordenado que aún esta en la lista, y luego haciendo
un intercambio con el elemento en la siguiente posición.
Salto=3:
Primera pasada:
{9,21,4,40,10,35} <-- se intercambian el 40 y el 9.
{9,10,4,40,21,35} <-- se intercambian el 21 y el 10.
Salto=1:
Primera pasada:
{9,4,10,40,21,35} <-- se intercambian el 10 y el 4.
{9,4,10,21,40,35} <-- se intercambian el 40 y el 21.
{9,4,10,21,35,40} <-- se intercambian el 35 y el 40.
Segunda pasada:
{4,9,10,21,35,40} <-- se intercambian el 4 y el 9.
Con sólo 6 intercambios se ha ordenado el array, cuando por
inserción se necesitaban muchos más.
}
}
temp=v[b];
v[b]=v[pivote];
v[pivote]=temp;
return pivote;
}
Fuentes:
http://aprender.fca.unam.mx/~rcastro/algoritmos-de-ordenamiento.pdf
Ejemplos de algoritmos de ordenamiento y código
Ejemplos animados.
http://www.sorting-algorithms.com/bubble-sort