[cut]
eh si, penso che sia l'unica Gian ... pero' il tuo metodo mi piace molto.
Si potrebbero unire le 2 soluzioni in una classe:
1) passo l'array originale come proprietà della classe
2) all'interno, ne creo una copia, la ordino e individuo i valori Min e Max
3) spazzolo l'array originale una sola volta, ed appena trovo i valori Min e Max mi memorizzo gli indici
Create Static
' Utilizzo:
' ii = [106, 11, 33, 77, -89, 125, -22, 66, 44, 55, -107, 115]
' cSortList.Lista = ii
' cSortList.Elabora
' lblMinimo.Text = "Minimo: " & cSortList.Minimo & " alla posizione " & cSortList.MinimoPos
' lblMassimo.Text = "Massimo: " & cSortList.Massimo & " alla posizione " & cSortList.MassimoPos
Private aLista As Integer[]
Private iMinimo As Integer = -1
Private iMinimoPos As Integer = -1
Private iMassimo As Integer = -1
Private iMassimoPos As Integer = -1
Property Lista As Integer[]
Property Read Minimo As Integer
Property Read MinimoPos As Integer
Property Read Massimo As Integer
Property Read MassimoPos As Integer
Private Function Lista_Read() As Integer[]
Return aLista
End
Private Function Lista_Write(aTmp As Integer[])
aLista = atmp
End
Private Function Minimo_Read() As Integer
Return iMinimo
End
Private Function Massimo_Read() As Integer
Return iMassimo
End
Private Function MinimoPos_Read() As Integer
Return iMinimoPos
End
Private Function MassimoPos_Read() As Integer
Return iMassimoPos
End
Public Sub Elabora()
Dim aTmp As Integer[]
Dim iCount As Integer
Dim iMax As Integer
iMinimo = -1
iMinimoPos = -1
iMassimo = -1
iMassimoPos = -1
iMax = alista.Count - 1
atmp = aLista.Copy()
atmp.Sort()
iMinimo = atmp[0]
iMassimo = atmp[imax]
For icount = 0 To imax
If iMinimoPos = -1 Then
If aLista[icount] = iminimo Then
iminimopos = icount
Endif
Endif
If imassimopos = -1 Then
If aLista[icount] = imassimo Then
imassimopos = icount
Endif
Endif
If iminimopos <> -1 And imassimopos <> -1 Then
Exit
Endif
Next
End
Bye by SixaM 8-]