Commit f199bfd
Changed files (3)
lib
data_structures
spec
data_structures
lib/data_structures/min_heap.rb
@@ -0,0 +1,14 @@
+class MinHeap
+ def initialize(items = [])
+ @items = items
+ @items.sort!
+ end
+
+ def min
+ @items.shift
+ end
+
+ def empty?
+ @items.empty?
+ end
+end
spec/data_structures/min_heap_spec.rb
@@ -0,0 +1,18 @@
+require "spec_helper"
+
+describe MinHeap do
+ it "should return nil" do
+ heap = MinHeap.new
+ heap.min.should be_nil
+ end
+
+ it "should return the items order from lowest to highest" do
+ n = 100
+ numbers = Array.new(n) { rand(n) }
+ heap = MinHeap.new(numbers.dup)
+
+ results = []
+ results << heap.min until heap.empty?
+ results.should == numbers.sort
+ end
+end
spec/spec_helper.rb
@@ -11,3 +11,4 @@ require_relative '../lib/data_structures/dynamic_array_stack'
require_relative '../lib/data_structures/binary_tree'
require_relative '../lib/data_structures/avl_tree'
require_relative '../lib/data_structures/hash_table'
+require_relative '../lib/data_structures/min_heap'