Skip to content

Instantly share code, notes, and snippets.

@davissp14
Created April 25, 2015 02:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davissp14/de5bcb430213873a1d6f to your computer and use it in GitHub Desktop.
Save davissp14/de5bcb430213873a1d6f to your computer and use it in GitHub Desktop.
Max Heap
class MaxHeap
def self.heapify(arr, i)
l = left(i)
r = right(i)
heap_size = arr.size - 1
if l <= heap_size && arr[l] > arr[i]
largest = l
else
largest = i
end
if r <= heap_size - 1 && arr[r] > arr[largest]
largest = r
end
unless largest == i
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, largest)
end
arr
end
private
def self.left(i)
2 * i + 1
end
def self.right(i)
2 * i + 2
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment