Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,45 @@
|
|||
Public Sub heapsort(pavIn As Variant)
|
||||
Dim liCount As Integer, liEnd As Integer
|
||||
Dim lvTemp As Variant
|
||||
liCount = UBound(pavIn) + 1
|
||||
|
||||
heapify pavIn, liCount
|
||||
|
||||
liEnd = liCount - 1
|
||||
While liEnd > 0
|
||||
lvTemp = pavIn(liEnd)
|
||||
pavIn(liEnd) = pavIn(0)
|
||||
pavIn(0) = lvTemp
|
||||
liEnd = liEnd -1
|
||||
siftDown pavIn,0, liEnd
|
||||
Wend
|
||||
End Sub
|
||||
|
||||
Private Sub heapify(pavIn As Variant,piCount As Integer)
|
||||
Dim liStart As Integer
|
||||
liStart = (piCount - 2) / 2
|
||||
While liStart >=0
|
||||
siftDown pavIn, liStart, piCount -1
|
||||
liStart = liStart - 1
|
||||
Wend
|
||||
End Sub
|
||||
|
||||
Private Sub siftDown(pavIn As Variant, piStart As Integer, piEnd As Integer)
|
||||
Dim liRoot As Integer, liChild As Integer
|
||||
Dim lvTemp As Variant
|
||||
liRoot = piStart
|
||||
While liRoot *2 + 1 <= piEnd
|
||||
liChild = liRoot *2 + 1
|
||||
If liChild +1 <= piEnd And pavIn(liChild) < pavIn(liChild + 1) Then
|
||||
liChild = liChild + 1
|
||||
End If
|
||||
If pavIn(liRoot) < pavIn(liChild) Then
|
||||
lvTemp = pavIn(liRoot)
|
||||
pavIn(liRoot) = pavIn(liChild)
|
||||
pavIn(liChild) = lvTemp
|
||||
liRoot = liChild
|
||||
Else
|
||||
Exit sub
|
||||
End if
|
||||
wend
|
||||
End Sub
|
||||
Loading…
Add table
Add a link
Reference in a new issue