Discusión:Ordenamiento por selección

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

He puesto el aviso de información inexacta, porque tanto los ejemplos como el algoritmo son muy extraños.

El auténtico algoritmo de selección busca el mínimo elemento, y sólo cuando lo ha encontrado intercambia su posición con la que le corresponde en la lista.

El algoritmo que aparece aquí es un algoritmo raro, vamos, que no lo he encontrado en ningún lado. Si este algoritmo resulta ser una misteriosa variación del algoritmo de selección y se quiere dejar, aviso que es muchísimo más eficiente recorrer el segundo bucle en sentido inverso, como hace el algoritmo de la burbuja mejorado. DrJones 12:53 12 jun, 2005 (CEST)

Como dice DrJones, este no es el algoritmo de ordenamiento por selección, sino el algoritmo de la burbuja. Además hay una pequeña errata. Donde dice:

si lista[i] < lista[j]

Debería decir:

si lista[i] > lista[j]

no obstante, la implementación en C y en Basic es correcta.

--Angel Fernández Pineda 21:04 29 jun, 2005 (CEST)

Texto considerado inexacto.[editar]

Esta es la parte del texto sospechosa de no corresponder al algoritmo de selección. Lo he corregido, pero su funcionamiento sigue siendo curioso.

iterar i desde 1 hasta n-1
    iterar j desde n hasta i+1
        si lista[i] > lista[j]
            intercambiar(lista[i], lista[j])

Implementaciones

C:

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

Basic:

For i = 1 To n - 1
   For j = n to i + 1
      If x(i) > x(j) Then
         temp = x(i)
         x(i) = x(j)
         x(j) = temp
      End If
   Next j
Next i