class Heap::HeapTemplate

Heap Template

Attributes

elements[R]

Public Instance Methods

add(element) click to toggle source
# File lib/Heap/heap_template.rb, line 6
def add(element)
  if element.is_a? Array
    element.each do |el|
      @elements.push el
      swim_up(count)
    end
  elsif defined? element.elements
    add element.elements
  else
    @elements.push element
    swim_up(count)
  end
end
count() click to toggle source
# File lib/Heap/heap_template.rb, line 20
def count
  @elements.length
end
sort() click to toggle source
# File lib/Heap/heap_template.rb, line 24
def sort
  el_temp = @elements.clone
  result = []
  result.push extract_root! while count > 0
  @elements = el_temp
  result
end

Protected Instance Methods

extract_root() click to toggle source
# File lib/Heap/heap_template.rb, line 34
def extract_root
  @elements[0]
end
extract_root!() click to toggle source
# File lib/Heap/heap_template.rb, line 38
def extract_root!
  swap(1, count)
  el = @elements.pop
  swim_down(1)
  el
end
swap(index1, index2) click to toggle source
# File lib/Heap/heap_template.rb, line 45
def swap(index1, index2)
  temp = @elements[index1 - 1]
  @elements[index1 - 1] = @elements[index2 - 1]
  @elements[index2 - 1] = temp
end