Skip to content

Instantly share code, notes, and snippets.

@pcorliss
Created September 7, 2015 20:50
Show Gist options
  • Save pcorliss/6d7d03876d6e5e9b535a to your computer and use it in GitHub Desktop.
Save pcorliss/6d7d03876d6e5e9b535a to your computer and use it in GitHub Desktop.
class Array
def merge_sorted(other)
i = 0
j = 0
sorted = []
while(i < self.length || j < other.length) do
l = self[i]
m = other[j]
if l.nil? || l >= m
sorted << m
j += 1
elsif m.nil? || l < m
sorted << l
i += 1
end
end
sorted
end
end
require 'rspec'
describe "#merge_sorted" do
it "merges to sorted equal length arrays" do
expect([1,3,5].merge_sorted([2,4,6])).to eq([1,2,3,4,5,6])
end
it "merges to uneven length arrays" do
expect([1].merge_sorted([2,4,6])).to eq([1,2,4,6])
end
it "handles empty arrays" do
expect([].merge_sorted([2,4,6])).to eq([2,4,6])
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment