Sei sulla pagina 1di 3

METODO DE INSERCION

Este mtodo 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 tambin
por el nombre de mtodo de la baraja.
Ejemplo:
Tenemos esta lista desordenada
5 14 24 39 43 65 84 45
El mtodo se basa en comparaciones y desplazamientos sucesivos. El
algoritmo de clasificacin de un vector X para N elementos se realiza con un
recorrido de todo el vector y la insercin 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 accin repetitiva insertar se realiza ms fcilmente con la inclusin de un
valor centinela o bandera (SW).


Inicio
// ordenacin
desde I =2 hasta N hacer
AUXI= x(I)
fin

Algoritmo por insercin mejorado

El algoritmo de insercin directa se mejora fcilmente. Para ello se recurre a
un mtodo de bsqueda binaria, en lugar de una bsqueda secuencial, para
encontrar mas rpidamente el lugar de insercin. Este mtodo se conoce como
insercin 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

Potrebbero piacerti anche