class Heap::MultipleHeap::MaxHeap

Multiple Heap with max root

Public Instance Methods

extract_max() click to toggle source
# File lib/Heap/multiple_heap/multiple_heap_max.rb, line 5
def extract_max
  extract_root
end
extract_max!() click to toggle source
# File lib/Heap/multiple_heap/multiple_heap_max.rb, line 9
def extract_max!
  extract_root!
end

Private Instance Methods

swim_down(index) click to toggle source
# File lib/Heap/multiple_heap/multiple_heap_max.rb, line 23
def swim_down(index)
  children = get_children index
  return if children.nil? || children.empty?
  max_child = children.max

  return if @elements[index - 1] >= max_child[0]
  swap index, max_child[1]
  swim_down max_child[1]
end
swim_up(index) click to toggle source
# File lib/Heap/multiple_heap/multiple_heap_max.rb, line 15
def swim_up(index)
  return if index == 1
  parent_index = ((index.to_f - 1) / @d).ceil
  return if @elements[parent_index - 1] >= @elements[index - 1]
  swap(parent_index, index)
  swim_up parent_index
end