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 a> a>