CLASIFICACIÓN POR SELECCIÓN DIRECTA.1. Seleccionar el elemento que tenga la clave menor. 2. Intercambiarlo con el primer elemento a1. 3. Repetir estas operaciones con los n-1 elementos restantes, luego con n-2 hasta que no quede más que un elemento(el más grande). Este mismo método se muestra con las mismas ocho claves que en la tabla . El algoritmo se formula así : FOR i:=1 TO n-1 DO asignar el índice del elemento más pequeño de a1..an a k; intercambiar ai con ak END i=1 i=2 i=3 i=4 i=5 i=6 i=7 a[1] 44 06 06 06 06 06 06 a[2] 55 55 12 12 12 12 12 a[3] 12 12 55 18 18 18 18 a[4] 42 42 42 42 42 42 42 a[5] 94 94 94 94 94 44 44 a[6] 18 18 18 55 55 55 55 a[7] 06 44 44 44 44 94 67 a[8] 67 67 67 67 67 67 94 Este método, denominado Selección Directa , es en cierto modo lo contrario de la inserción directa: -Inserción Directa: en cada paso se toma un elemento de la secuencia fuente y se recorren todos los del destino para encontrar el punto de inserción. -Selección Directa: considera todos los elementos del vector fuente para encontrar la clave más pequeña que debe depositarse como el siguiente elemento de la secuencia destino Procedure Selección Directa; VAR i,j,k:index; x:item; FOR i=1 TO n-1 DO k:=i; x:=a[i] ; FOR j:=i+1 TO n DO IF a[j]<x THEN k:=j; x:=a[k]; END END; a[k]:=a[i]; a[i]:=x; END; (*selección inicial*) (*búsqueda en secuencia fuente de la clave más pequeña*) (*selección*) (*intercambio*) Análisis de Selección Directa: -Comparaciones.-Primera eleccion -Segunda elección -n-1 elección del menor n-1 comparaciones n-2 comparaciones 1 comparación C = 1 + 2 + 3 + . . . .+ n - 1 = C n 2 n 2 -Independiente del orden inicial de los datos. n (n - 1 ) 2 Movimientos.FOR i=1 TO n-1 DO k:=i; x:=a[i] ; FOR j:=i+1 TO n DO IF a[j]<x THEN k:=j; x:=a[k]; END END; a[k]:=a[i]; a[i]:=x; END; (*selección inicial*) (*búsqueda en secuencia fuente de la clave más pequeña*) (*selección*) * Mejor caso : El IF no se ejecuta 3(n-1) veces se ejecuta el FOR externo;el 3 viene de las asignaciones en rojo. M m in 3 ( n 1) *Peor caso: El IF se ejecuta el máximo número de veces , con un movimiento en cada ejecución inicialmente en orden inverso El elemento en posición n se ordena intercambio con el de posición 1 los 2 elementos ordenados El elemento en posición n-1 se ordena intercambio con el de posición 2 los 2 elementos ordenados . . se ordenan de 2 en 2 El número máximo de ordenaciones de parejas será n M m ax if 1 3 5 7 .. a 1 1; n 2 P rogresion A ritm etica con 2 a m= n /2 n 1 r =2 a1 a m 1 n 1 n n M m ax -if ( )m ( ) 2 2 2 4 su m a n d o lo s 3 (n - 1 ) m o v im ien to s d el F O R ex tern o M 3 ( n 1) m ax 2 n 2 4 *Caso Promedio: -La probabilidad de que el segundo sea menor que el primer elemento es 1/2 el tercer elemento sea menor que el primer elemento es 1/3 Dada la formula de la probabilidad: x Hn 1 x i p i (1 x 1 2 1 3 1 4 ... 1 2 1 n ) (1 x 1 3 ln n g ) . . (1 x 1 2n 1 12 n 2 1 n ) .. este 1 no aparece en la formula de probabilidad ,luego el número de movimientos promedio para una iteración M p ro m ed io [ln n g 1 2n 1 12n 2 ]1 M prom edio ln n g 1 N um ero m edio de m ovim ientos en el pase i Sumando todos los pases n [ ln n g 1] n [ g 1] i 1 n i 1 ln i resolución de la integral por partes : u=lnx du=1/xdx dv=dx v=dx=x luego n ln xdx x [(ln x 1)]1 n (ln n 1) 1 n i 1 siendo g=0.577216 M prom n ( g 1) n (ln n 1) 1 ng n n ln n n 1 ng n ln n 1 n (ln n g ) 1 Podemos concluir que en general el algoritmo de selección directa ha de preferirse a la inserción directa , pese a que esta es todavía un poco más rápida en los casos en que las claves se clasifican o casi se clasifican al principio.