Attribute VB_Name = "Module1" Type point3D x As Double y As Double z As Double End Type Type LidarPulse Xl As Double Yl As Double Zl As Double Xf As Double Yf As Double Hf As Double Intf As Byte Rangef As Double Xs As Double Ys As Double Hs As Double Ints As Byte Rangel As Double Treehit As Boolean PlotHit As Boolean Tree As point3D End Type Public LP() As LidarPulse Public Sub indexx(ByVal N As Long, ra() As Single, indx() As Long) Rem Heapsort from Numerical recipes Rem indx(1 to N) is an index table, returned Rem ra(1 to N) is the data to be sorted, left as is. Dim i As Long, j As Long, l As Long, ir As Long, indxt As Long Dim q As Single Dim apu As Integer On Error GoTo virhe_sort For j = 1 To N indx(j) = j Next j l = N / 2 + 1 ir = N 10: If (l > 1) Then l = l - 1 indxt = indx(l) q = ra(indxt) Else indxt = indx(ir) q = ra(indxt) indx(ir) = indx(1) ir = ir - 1 If (ir = 1) Then indx(1) = indxt Exit Sub End If End If i = l j = l + l 20: If j <= ir Then If j < ir Then If (ra(indx(j)) < ra(indx(j + 1))) Then j = j + 1 End If If (q < ra(indx(j))) Then indx(i) = indx(j) i = j j = j + j Else j = ir + 1 End If GoTo 20 End If indx(i) = indxt GoTo 10 virhe_sort: MsgBox ("Error in Heapsort, l is " & l) End Sub