Buscador

Ordenacin rpida con valor de referencia central

Como se indica, en primer lugar calculamos cul es la posicin central del array, y a partir de ah realizamos el proceso de ordenacin. Recordemos que este algoritmo realiza una reubicacin de valores, pero estos no tienen la obligacin de quedar ordenados, como se muestra en el ejemplo del Cdigo fuente 212.
' algoritmo de ordenacin rpida estableciendo como valor
' de referencia un elemento que se encuentre en la mitad del array
Public Sub Main()
Dim Valores() As Integer = {51, 5, 72, 44, 67, 20, 19}
Dim PosIzquierda As Integer
Dim PosDerecha As Integer
Dim ValorRef As Integer
Dim Intercambio As Integer
' establecer ndices para los recorridos del array
' desde el principio y final
PosIzquierda = 0
PosDerecha = UBound(Valores)
' calcular el valor de referencia a comparar
ValorRef = Valores(PosDerecha / 2)
While PosIzquierda <= PosDerecha
' recorrer hasta encontrar un valor mayor que el de referencia
While Valores(PosIzquierda) < ValorRef
PosIzquierda = PosIzquierda + 1
End While
' recorrer hasta encontrar un valor menor que el de referencia
While Valores(PosDerecha) > ValorRef
PosDerecha = PosDerecha - 1
End While
' intercambiar valores: el menor pasa a la izquierda del valor
' de referencia, y el mayor pasa a la derecha
If PosIzquierda <= PosDerecha Then
Intercambio = Valores(PosIzquierda)
Valores(PosIzquierda) = Valores(PosDerecha)
Valores(PosDerecha) = Intercambio
' actualizar ndices
PosIzquierda = PosIzquierda + 1
PosDerecha = PosDerecha - 1
End If
End While
End Sub
Cdigo fuente 212

No hay comentarios:

Publicar un comentario