Algoritmos de ordenación

Repasando algunos apuntes que tenía, me he encontrado con algunas cosas que no estaría mal recordar. Una de ellas son los algoritmos de ordenación.

En este post 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:

burbujaCódigo:

Archivo MetodoBurbuja.cs

  • Método de inserción (Insertion sort)

Este método consiste en insertar un elemento en la posición correspondiente con respecto a otros dos previamente ya ordenados.

Ejemplo: insertion Código:

Archivo MetodoInsercion.cs

  • Método Quicksort

El algoritmo basado en el método quicksort es el más 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 envían 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:

Código:

Archivo MetodoQuicksort.cs

   1:              for (int i = 1; i <= vector.Length; i++)
   2:              {
   3:                  cambio = false;
   4:                  for (int j = 0; j < vector.Length - i; j++)
   5:                  {
   6:                      if (vector[j] >= vector[j + 1])
   7:                      {
   8:                          temp = vector[j + 1];
   9:                          vector[j + 1] = vector[j];
  10:                          vector[j] = temp;
  11:                          cambio = true;
  12:                      }
  13:                  }
  14:                  if (cambio == false) break;
  15:              }