jueves, 17 de marzo de 2011

Algoritmo de ordenación por selección directa

Es un algoritmo sencillo y uno de los más sencillos de recordar e implementar. No es el mejor algoritmo de ordenación ya que realiza una gran cantidad de comparaciones, pero, por el contrario, realiza muy pocos intercambios.

El algoritmo consiste en realizar varias pasadas sobre el vector, de tal manera que el elemento de menor peso se coloque al principio del vector en un solo intercambio. En cada pasada se recorre la parte no ordenada del vector buscando el elemento de menor peso y cuando se localiza se intercambia con el primer elemento de la parte no ordenada del vector.

Veamos la implementación del algoritmo en C:

/* funcion de ordenacion por seleccion directa */
void seleccion_directa(int v[], int N) {
   int min, tmp; // elemento de menor peso y elemento temporal
 
   /* recorremos todo el vector */
   for(int i = 0; i < N - 1; i++) {
      /* suponemos que es el primero */
      min = i;
      /* recorremos la parte no ordenada */
      for(int j = i+1; j < N; j++) {
         /* buscamos el de menor peso */
         if(v[j] < v[min]) min = j;
      }
      /* intercambio posicion i por el de menor peso */
      tmp = v[i];
      v[i] = v[min];
      v[min] = tmp;  
   }
}

Enlaces externos:

No hay comentarios:

Publicar un comentario