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

Mtodos de Ordenamiento:

Definicin:

En computacin y matemticas un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relacin de orden, es decir, el resultado de salida ha de ser una permutacin o reordenamiento de la entrada que satisfaga la relacin de orden dada. Las relaciones de orden ms usadas son el orden numrico y el orden lexicogrfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de bsqueda y fusin) que requieren listas ordenadas para una ejecucin rpida. Tambin es til para poner datos en forma cannica y para generar resultados legibles por humanos.
1. Mtodo burbuja:

for(i=0; i < n-1; i++){ for(j=0; j < n-1; j++){ if(vec[j] > vec[j+1]){ aux=vec[j]; vec[j]=vec[j+1]; vec[j+1]=aux;} }

T(n2) T(n) T(1) T(1) T(1) T(1)

2. Mtodo burbuja Optimizada.

Bubblesort(int matriz[]) {

int buffer; int i,j; for(i = 0; i < matriz.length; i++) { for(j = 0; j < i; j++) { if(matriz[i] < matriz[j]) { buffer = matriz[j]; matriz[j] = matriz[i]; matriz[i] = buffer; } } } }

3. Mtodo Insercin binaria


PROCEDURE InsercionBinaria; VAR i,j,m,L,R:index; x:item; BEGIN FOR i=2 TO n DO x=a[i]; L:=1; R:=i; WHILE L<R DO m:=(L+R) DIV 2;

IF a[m] <=x THEN L:=m+1 ELSE R:=m END END; FOR j=i TO R+1 BY -1 DO a[j]:=a[j-1] (*desplazamiento*) END; a[R]:=x(*insercion*) END END InsercinBinaria

4. Insercin directa

Procedimiento Insertion Sort Este procedimiento recibe el arreglo de datos a ordenar a[] y altera las posiciones de sus elementos hasta dejarlos ordenados de menor a mayor. N representa el nmero de elementos que contiene a[]. paso 1: [Para cada pos. del arreglo] For i <- 2 to N do paso 2: [Inicializa v y j] v <- a[i] j <- i. paso 3: [Compara v con los anteriores] While a[j-1] > v AND j>1 do paso 4: [Recorre los datos mayores] Set a[j] <- a[j-1], paso 5: [Decrementa j] set j <- j-1. paso 5: [Inserta v en su posicin] Set a[j] <- v. paso 6: [Fin] End.

5. Seleccin Directa

para i=1 hasta n-1 minimo = i; para j=i+1 hasta n si lista[j] < lista[minimo] entonces minimo = j /* (!) */ fin si fin para intercambiar(lista[i], lista[minimo]) fin para

6. Metodo shell sort


7. //Shell sort original con cuatro bucles 8. //Correcto, aunque no es la implementacin ms comn 9. void ShellSort(int[] A) 10. { 11. //el primer salto o gap (representado por la variable k) 12. //es la mitad de la longitud del array 13. int k=A.Length/2; 14. //este primer bucle nos mantendr dentro del algoritmo 15. //mientras el salto sea mayor o igual que 1. Antes de 16. //cada iteracin dividimos el salto o gap (k) entre 2 17. while (k>=1) 18. { 19. //este segundo bucle cuenta los subarrays que nos 20. //salen para cada valor de salto k. 21. for (int subarray = 0; subarray < k; subarray++) 22. { 23. //para cada subarray recorremos sus elementos 24. //con este otro bucle for, desde el segundo 25. //hasta el ltimo. Este bucle es igual que el del 26. //algoritmo de insercin directa, pero adaptado 27. //para un salto k 28. for (int i = k+subarray; i < A.Length; i += k) 29. { 30. int v = A[i]; //tomamos el elemento i-simo 31. int j = i - k; //apuntamos al anterior en el subarray 32. //Con este bucle desplazamos elementos en el subarray 33. //hasta encontrar la posicin que le corresponde 34. //al elemento i-simo que tenemos guardado en v 35. //Es como el bucle interior de la insercin directa 36. //pero adaptado para moverse por un subarray con 37. //con salto k 38. while (j >= 0 && A[j] > v) 39. { 40. A[j + k] = A[j]; 41. j-=k; 42. } 43. A[j + k] = v; 44. } //fin for 45. } //fin for 46. //obtenemos un nuevo salto 47. k /= 2; 48. } //fin while 49. } //ShellSort

7. Metodo shake sort

Shakersort(A,N) Inicio Declarar i, izq, der, k, aux: entero izq 2 der N kN Repetir Para i der hasta izq inc (-1) haga Si (A[i-1]>A[i]) entonces Aux A[i-1] A[i-1] A[i] A[i] aux ki Fin si Fin para Izq k + 1 Para i izq hasta der haga Si (A[i-1] > A[i]) entonces Aux A[i-1] A[i-1] A[i] A[i] Aux ki Fin si Fin para Der k-1 Hasta que izq>der Fin

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