Attribute VB_Name = "mSelectSort" Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Módulo Ordenação por SelectSort ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Guarda o nome do módulo Private Const ST_MY_NAME As String = "mSelectSort" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Ordenação por SelectSort ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub SelectSort(objArray As cObjectArray) On Error GoTo ErrTreat: Dim lnI As Long ' Posição do sort atual Dim lnJ As Long ' Posição de comparação atual Dim lnK As Long ' Última posição no vetor Dim lnL As Long ' Penúltima posição no vetor Dim lnM As Long ' Menor item ' Inicia valores lnI = 0 lnK = objArray.Size - 1 lnL = lnK - 1 ' Enquanto houver itens While (lnI <= lnL) ' Inicia valores lnM = lnI ' Percorre o restante do vetor For lnJ = (lnM + 1) To lnK ' Verifica se é menor que o menor item If (objArray.Element(lnJ).Compare(objArray.Element(lnM)) = COMPARATION.cSmaller) Then ' Define o novo menor item lnM = lnJ End If Next lnJ ' Verifica se o menor é outro If (lnI <> lnM) Then ' Troca de posição objArray.Swap lnI, lnM End If ' Incrementa contador lnI = lnI + 1 Wend Exit Sub ErrTreat: LogErrMessage Err.Description, ST_MY_NAME + ".SelectSort" End Sub