Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var hSize = 0
- fun swapPlaces(l: ArrayList<Double>, i: Int, largest: Int) {
- val temp = l.get(i)
- l.set(i, l.get(largest))
- l.set(largest, temp)
- }
- fun heapify(l: ArrayList<Double>, i: Int) {
- val left = i * 2
- val right = i * 2 + 1
- var largest = 0
- if(left <= hSize - 1 && l.get(left) > l.get(i)) {
- largest = left
- } else {
- largest = i
- }
- if(right <= hSize - 1 && l.get(right) > l.get(largest)) {
- largest = right
- }
- if (largest != i) {
- swapPlaces(l, i, largest)
- heapify(l, largest)
- }
- }
- fun buildHeap(l: ArrayList<Double>) {
- val hSize = l.size
- for (i in hSize/2 downTo 1) {
- heapify(l, i)
- }
- }
- vikeneb:
- buildHeap(l)
- for (i in l.size - 1 downTo 1) {
- swapPlaces(l, i, 0)
- hSize--
- heapify(l, 0)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement