42 lines
799 B
Plaintext
42 lines
799 B
Plaintext
Sub Lis(arr() As Integer)
|
|
Dim As Integer lb = Lbound(arr), ub = Ubound(arr)
|
|
Dim As Integer i, lo, hi, mitad, newl, l = 0
|
|
Dim As Integer p(ub), m(ub)
|
|
|
|
For i = lb To ub
|
|
lo = 1
|
|
hi = l
|
|
Do While lo <= hi
|
|
mitad = Int((lo+hi)/2)
|
|
If arr(m(mitad)) < arr(i) Then
|
|
lo = mitad + 1
|
|
Else
|
|
hi = mitad - 1
|
|
End If
|
|
Loop
|
|
newl = lo
|
|
p(i) = m(newl-1)
|
|
m(newl) = i
|
|
If newL > l Then l = newl
|
|
Next i
|
|
|
|
Dim As Integer res(l)
|
|
Dim As Integer k = m(l)
|
|
For i = l-1 To 0 Step - 1
|
|
res(i) = arr(k)
|
|
k = p(k)
|
|
Next i
|
|
|
|
For i = Lbound(res) To Ubound(res)-1
|
|
Print res(i); " ";
|
|
Next i
|
|
End Sub
|
|
|
|
Dim As Integer arrA(5) => {3,2,6,4,5,1}
|
|
Lis(arrA())
|
|
Print
|
|
Dim As Integer arrB(15) => {0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15}
|
|
Lis(arrB())
|
|
|
|
Sleep
|