Commit f199bfd

mo khan <mo@mokhan.ca>
2013-10-13 03:16:07
start to build a min heap.
1 parent 4dc3879
Changed files (3)
lib
data_structures
spec
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'