METODO DE INSERCION


Este método consiste en insertar un elemento en el vector en una parte ya ordenada de este vector y comenzar de nuevo con los elementos restantes. Por ser utilizado generalmente por los jugadores de cartas se le conoce también por el nombre de método de la baraja.

Ejemplo:

Tenemos esta lista desordenada

5

14

24

39

43

65

84

45

El método se basa en comparaciones y desplazamientos sucesivos. El algoritmo de clasificación de un vector X para N elementos se realiza con un recorrido de todo el vector y la inserción del elemento correspondiente en el lugar adecuado. El recorrido se realiza desde el segundo elemento al n-esimo.



desde I = 2 hasta N hacer
	insertar X[I] en el lugar adecuado
	entre X[I] . . X[I - 1]
fin desde


Esta acción repetitiva insertar se realiza más fácilmente con la inclusión de un valor centinela o bandera (SW).



Inicio 
     // ordenación
     desde I =2 hasta N hacer 
          AUXI= x(I)
fin 


Algoritmo por inserción mejorado


El algoritmo de inserción directa se mejora fácilmente. Para ello se recurre a un método de búsqueda binaria, en lugar de una búsqueda secuencial, para encontrar mas rápidamente el lugar de inserción. Este método se conoce como inserción binaria.


Dim DATO(0 To 19) As Double, N As Double
Private Sub Command1_Click()

Dim A As Double, J As Double
N = InputBox("digite numero elementos","entrada")
A = 0
Do J=InputBox("digite el numero",+str(A),"entrada")
DATO(A) = J
MSFlexGrid1.TextMatrix(0, A) = DATO(A)
A = A + 1
Loop Until A = N
End Sub


Private Sub Command2_Click()

Dim A As Double, C As Double
Dim AUX As Double, R As Double
Dim H As Double
H = 0
Do C = 1
A = 0
Do If DATO(C) > DATO(A) Then C = C + 1
A = A + 1
Else AUX = DATO(C)
R = C
Do DATO(R) = DATO(A)
MSFlexGrid1.TextMatrix(0,R)=DATO(R)
R = R - 1
Loop Until R = A
DATO(A) = AUX
MSFlexGrid1.TextMatrix(0,A)=DATO(A)
C = C + 1
A = A + 1
End If
Loop Until C = N
H = H + 1
Loop Until H = N
End Sub


Private Sub Command3_Click()

Dim A As Double
A = 0
Do MSFlexGrid1.TextMatrix(0, A) = ""
A = A + 1
Loop Until A = N
End Sub


Private Sub Command4_Click()

End End Sub