Está en la página 1de 3

Programación de métodos de ordenamiento de datos.

ORDENAMIENTO POR INTERCAMBIO


El algoritmo del intercambio aunque es el más sencillo de implementar es uno de
los mas pobres en rendimiento, se basa en la idea de buscar cada vez el menor
elemento del conjunto y ubicarlo al principio del mismo, repitiendo este proceso
cada vez con el conjunto sin su primer elemento (el menor del conjunto anterior),
hasta llegar a un conjunto de un solo elemento que por definición ya está
ordenado.

En cada paso del algoritmo se compara el primer elemento del conjunto x[i], con
los demás elementos del mismo x[j] (j=i+1 .. n) y cuando x[i] es mayor que x[j], se
intercambian sus valores. Cuando se termina de recorrer el arreglo el proceso nos
garantiza que en x[i] está el menor elemento del conjunto.

Teniendo en cuenta que el algoritmo de ordenamiento por intercambio se realiza


siempre de la misma manera independiente de los datos que estén almacenados,
no existe un mejor, peor o caso promedio y su complejidad siempre será O(n^2)

ORDENAMIENTO POR INSERCION


El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural
de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo
de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar
una lista de n elementos.

Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado.


Después, cuando hay k elementos ordenados de menor a mayor, se toma el
elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose
cuando se encuentra un elemento menor (todos los elementos mayores han sido
desplazados una posición a la derecha) o cuando ya no se encuentran elementos
(todos los elementos fueron desplazados y este es el más pequeño). En este
punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.

iinserccion
#include<stdio.h>
#include<conio.h>
int a[4]={4,1,7,2};
int n=4;
int i,j,aux;
void main(){
clrscr();
for(i=1;i<n;i++)
{
j=i;
aux=a;
while(j>0 && aux<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=aux;
}
for(i=0;i<4;i++)
{
printf("%d",a);
}
getch();
}

También podría gustarte