Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Métodos de Ordenamiento de Datos.
Métodos de Ordenamiento de Datos.
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.
ORDENAMIENTO DE BURBUJA
burbuja
#include<stdio.h>
#include<conio.h>
int a[3]={3,2,1};
int i,j,aux,n=3;
void main(){
clrscr();
for(i=0;i<=n;i++){
for(j=0;j<n-1;j++){
if(a[j]>a[j+1]){
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
for(i=0;i<3;i++)
printf("%d",a);
getch();
ORDENAMIENTO SHELL
#include<stdio.h>
#include<conio.h>
int a[5];
int n=5;
void main()
int inter=(n/2),i=0,j=0,k=0,aux;
clrscr();
scanf("%d",& a);
while(inter>0){
for(i=inter;i<n;i++)
j=i-inter;
while(j>=0) {
k=j+inter;
if(a[j]<=a[k]){
j--;
else{
aux=a[j];
a[j]=a[k];
a[k]=aux;
j=j-inter;
inter=inter/2;
for(i=0;i<5;i++)
printf("%d n",a);
getch();
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.
inserccion
#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;
a[j]=a[j-1];
j--;
a[j]=aux;
for(i=0;i<4;i++)
printf("%d",a);
getch();
Su funcionamiento es el siguiente:
Y en general:
De esta manera se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos
indexados desde el 1:
minimo = i;
minimo = j /* (!) */
fin si
fin para
intercambiar(lista[i], lista[minimo])
fin para
seleccion
#include<stdio.h>
#include<conio.h>
int x[4]={1,4,8,6};
int n=4,j=0,i=0;
int temp=0,minimo=0;
void main(){
clrscr();
for(i=0;i<n-1;i++)
minimo=i;
for(j=i+1;j<n;j++)
{
if(x[minimo] > x[j])
minimo=j;
temp=x[minimo];
x[minimo]=x;
x=temp;
for(i=0;i<n;i++)
printf("%d",x);
getch();