metodo de la burbuja c#

10
Metodos de Ordenación voy a explicar 3 algoritmos: ordenación por el método de la burbuja, ordenación por el método de inserción y ordenación por el método quicksort. Método de la burbuja (Bubble sort) El método de la burbuja consiste en comparar el primer elemento con el segundo, el segundo con el tercero, … , hasta que en una de las comparaciones ocurra que el primer elemento a comparar es mayor que el siguiente. En tal caso, se intercambian los valores y se sigue con la comparación. Al llegar a la última comparación, se vuelve a empezar. Este proceso se repite hasta que no se produzca ningún intercambio, o en el peor de los casos, hasta “n –1” vueltas (siendo n el número de elementos a comparar). Ejemplo: Codigo: 1. private static void Burbuja(int[] vector) 2. { 3. int temp; bool cambio; 4. for (int i = 1; i<= vector.Lenght; i++) 5. { 6. cambio = false; 7. for (int j = 0; j < vector.Lenght - i; j++) 8. { 9. temp = vector[j + 1]; 10. vector[j + 1] = vector[j]; 11. vector[j] = temp; 12. cambio = true; 13. } 14. } 15. if (cambio == false) break; 16. }

Upload: bolivar-orbe-robles

Post on 24-Aug-2014

144 views

Category:

Documents


8 download

TRANSCRIPT

Metodos de Ordenacin

voy a explicar 3 algoritmos: ordenacin por el mtodo de la burbuja, ordenacin por el mtodo de insercin y ordenacin por el mtodo quicksort. Mtodo de la burbuja (Bubble sort) El mtodo de la burbuja consiste en comparar el primer elemento con el segundo, el segundo con el tercero, , hasta que en una de las comparaciones ocurra que el primer elemento a comparar es mayor que el siguiente. En tal caso, se intercambian los valores y se sigue con la comparacin. Al llegar a la ltima comparacin, se vuelve a empezar. Este proceso se repite hasta que no se produzca ningn intercambio, o en el peor de los casos, hasta n 1 vueltas (siendo n el nmero de elementos a comparar). Ejemplo:

Codigo:

1.private static void Burbuja(int[] vector) 2.{ 3. int temp; bool cambio; 4. for (int i = 1; itemp; j--) 8. vector[j+1] = vector[j]; 9. vector[j+1] = temp; 10. } 11. }

using System; using System.IO; namespace Ordenacion2 { public class MetodoInsercion { public static void Main(string[] args) { int[] vector; int temp; Console.Write("Cuntos nmeros deseas ordenar? "); temp = Leer.datoInt(); vector = new int[temp]; for (int i = 0; i < temp; i++) { Console.Write("Introduce el dato " + (i+1) + " : "); vector[i] = Leer.datoInt(); } Console.Write("Vector a ordenar: [ "); for (int j = 0; j < vector.Length; j++) { Console.Write(vector[j] + " "); } Console.Write("]\n"); Insercion(vector); Console.Write("Vector a ordenado: [ "); for (int j = 0; j < vector.Length; j++) { Console.Write(vector[j] + " "); } Console.Write("]\n"); } Console.ReadKey();

private static void Insercion(int[] vector) { for (int i=1; i=0 && vector[j]>temp; j--) vector[j+1] = vector[j]; vector[j+1] = temp; Console.Write("Insercin "+ i + ": "); Console.Write("[ "); for (int k = 0; k < vector.Length; k++) { Console.Write(vector[k] + " "); } Console.Write("]\n"); } }

} public class Leer { public static int datoInt() { string dato; dato = System.Console.ReadLine(); return int.Parse(dato); } } }

Mtodo Quicksort El algoritmo basado en el mtodo quicksort es el ms eficiente de todos. Consiste en elegir un elemento al que llamaremos pivot, sobre el cual se van ordenando el resto de los elementos. Si es menor a la izquierda y si es mayor a la derecha. Una vez terminado el primer ciclo, se envan las listas izquierda y derecha de elementos situadas entre pivot. Este proceso se repite hasta que las listas enviadas sean de 1 solo elemento. Ejemplo:

Codigo: 1.private static void Quicksort(int[] v) 2.{ 3. Qs(v, 0, v.Length-1); 4.} 5. 6.private static void Qs(int[] vector, int primero, int ultimo) 7.{ 8. int i, j, central; 9. double pivote; 10. 11. central = (primero + ultimo) / 2; 12. pivote = vector[central]; 13. i = primero; 14. j = ultimo; 15. 16. do 17. { 18. while (vector[i] < pivote) i++; 19. while (vector[j] > pivote) j--; 20. 21. if (i