Class: DSA::MaxHeap

Inherits:
Object
  • Object
show all
Defined in:
lib/dsa-ruby/heap.rb

Instance Method Summary collapse

Constructor Details

#initialize(elements = []) ⇒ MaxHeap

Returns a new instance of MaxHeap.



75
76
77
78
# File 'lib/dsa-ruby/heap.rb', line 75

def initialize(elements = [])
  @elements = []
  elements.each { |e| push(e) }
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/dsa-ruby/heap.rb', line 104

def empty?
  @elements.empty?
end

#peekObject

Raises:

  • (IndexError)


95
96
97
98
# File 'lib/dsa-ruby/heap.rb', line 95

def peek
  raise IndexError, "heap is empty" if empty?
  @elements[0]
end

#popObject

Raises:

  • (IndexError)


86
87
88
89
90
91
92
93
# File 'lib/dsa-ruby/heap.rb', line 86

def pop
  raise IndexError, "heap is empty" if empty?

  swap(0, @elements.size - 1)
  max = @elements.pop
  sift_down(0)
  max
end

#push(val) ⇒ Object



80
81
82
83
84
# File 'lib/dsa-ruby/heap.rb', line 80

def push(val)
  @elements << val
  sift_up(@elements.size - 1)
  self
end

#sizeObject



100
101
102
# File 'lib/dsa-ruby/heap.rb', line 100

def size
  @elements.size
end

#to_aObject



108
109
110
# File 'lib/dsa-ruby/heap.rb', line 108

def to_a
  @elements.dup
end