Ordenación por Selección Directa

Anuncio
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.
Descargar