sábado, 12 de julio de 2014

EVP7

Ordenamiento

Los 3 Métodos de Ordenamiento más populares

1)     Bubble Sort (Ordenamiento Burbuja):

Es el algoritmo de ordenamiento más sencillo de todos, conocido también como método del intercambio directo, el funcionamiento se basa en la revisión de cada elemento de la lista que va a ser ordenada con el elemento siguiente. El origen del nombre de este algoritmo proviene de la forma con la que suben por la lista los elementos durante los intercambios, tal y como si fueran "burbujas", el algoritmo fundamental de este método es la simple comparación de elementos siendo así el más fácil de implementa.

·         Ejemplo de burbuja
                          
public
static int[] OrdenarBurbuja(int[] n)
{
    int temp;
    int t = n.length;
    for (int i = 1; i < t; i++) 
    {
         for (int k = t- 1; k >= i; k--) 
         {
                if(n[k] < n[k-1])
                {
                    temp = n[k];
                    n[k] = n[k-1];
                    n[k-1]=  temp;
                }
         }
    }
    return n;
}

Codificación en C#:


Public int[] OrdenarBurbuja(int[]x)
{
        int t= x.Length, temp;
        for(int i=1 ; i< t ; i++)
        {
                for(int j = t-1 ; j >= i; j--)
                {
                        if(x[j] < x[j-1])
                        {
                                temp= x[j];
                                x[j]= x[j-1];
                                x[j-1]= temp;
                        }
                }
        }
}
 
 
 
2)     Quick Sort (Ordenamiento Rápido):

Es el algoritmo de ordenamiento más eficiente de todos, se basa en la técnica de "Divide y Vencerás", que permite en promedio, ordenar n elementos en un tiempo proporcional a n*log(n). Algoritmo Fundamental:

1.    Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.
2.    Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores.
3.    La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.
4.    Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.


3)     Heap Sort (Ordenamiento por Montículos):

Es un algoritmo de ordenamiento no recursivo, no estable, consiste en almacenar todos los elementos del vector a ordenar en un montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento (o el mayor, según se haya definido el montículo) de todos los almacenados en él.

 


ejemplo de ordenamientos

·         Ordena los números.

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