Вы находитесь на странице: 1из 3

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

 Por intercambio.
 Por inserción.

METODOS DE ORDENAMIENTO
Debido a que las estructuras de datos son utilizadas para almacenar información, para poder
recuperar esa información de manera eficiente es deseable que aquella esté ordenada. Existen
varios métodos para ordenar las diferentes estructuras de datos básicas.

En general los métodos de ordenamiento no son utilizados con frecuencia, en algunos casos sólo
una vez. Hay métodos muy simples de implementar que son útiles en los casos en dónde el
número de elementos a ordenar no es muy grande (ej, menos de 500 elementos). Por otro lado
hay métodos sofisticados, más difíciles de implementar pero que son más eficientes en cuestión
de tiempo de ejecución.

Los métodos sencillos por lo general requieren de aproximadamente n x n pasos para ordenar n
elementos.

Los métodos simples son: insertion sort (o por inserción directa) selection sort, bubble sort, y
shellsort, en dónde el último es una extensón al insertion sort, siendo más rápido. Los métodos
más complejos son el quick-sort, el heap sort, radix y address-calculation sort. El ordenar un
grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal
que represente un orden, el cual puede ser numérico, alfabético o incluso alfanumérico,
ascendente o descendente.

Se ha dicho que el ordenamiento puede efectuarse moviendo los registros con las claves. El
mover un registo completo implica un costo, el cual se incrementa conforme sea mayor el
tamaño del registro. Es por ello que es deseable evitar al máximo el movimiento de los registros.
Una alternativa es el crear una tabla de referencias a los registros y mover las referencias y no
los datos. A continuación se mostrarán los métodos de ordenamiento empezando por el más
sencillo y avanzando hacia los mas sofisticados

La eficiencia de los algoritmos se mide por el número de comparaciones e intercambios que


tienen que hacer, es decir, se toma n como el número de elementos que tiene el arreglo a
ordenar y se dice que un algoritmo realiza O(n2) comparaciones cuando compara n veces los n
elementos, n x n = n2.
Por intercambio:

. Definición 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(n2)
Por inserción:

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();

Вам также может понравиться