QuickSort para OOo Basic

Este procedimiento para ordenar matrices es, en la gran mayoría de casos, más rápido que el método de la burbuja.

Para conocer más sobre estos métodos puedes consultar las siguientes páginas: método Burbuja; método QuickSort

Ejemplo:
Sub Prueba()
Dim aDatos()

	aDatos = Array( "hola", "23", "12", "adiós", 20, 14, "¿qué tal?", "Hola" )
	QuickSort aDatos
	MsgBox Join( aDatos, chr(10) )

End Sub

El código del procedimiento es el siguiente:

Sub QuickSort( a(), optional p As long, optional u As long )  
Dim i As long, j As long, m, t

    p = iif(IsMissing( p ), lBound(a), p )
    u = iif(IsMissing( u ), uBound(a), u )
    
    i = p
    j = u
    m = a((p + u) / 2)
    
    While (i <= j)
		While (a(i) < m And i < u) : i = i + 1 : Wend
		While (m < a (j) And j> p) : j = j - 1 : Wend

		If (i <= j) Then
		  t = a(i)
		  a(i) = a(j)
		  a(j) = t
		  i = i + 1 :    j = j - 1
		End If
    Wend

    If (p < j) Then QuickSort(a, p, j)
    If (i < u) Then QuickSort(a, i, u)

End Sub

No hay reacciones, todavía


Form is loading...