Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- describe "#binary_search" do
- it "searches AddressBook for a non-existent entry" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Dan")
- expect(entry).to be_nil
- end
- end
- it "searches AddressBook for Bill" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Bill")
- expect(entry).to be_a Entry
- check_entry(entry, "Bill", "555-555-3454", "bill@blocmail.com")
- end
- it "searches AddressBook for Bob" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Bob")
- expect(entry).to be_a Entry
- check_entry(entry, "Bob", "555-555-5564", "bob@blocmail.com")
- end
- it "searches AddressBook for Joe" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Joe")
- expect(entry).to be_a Entry
- check_entry(entry, "Joe", "555-555-5532", "joe@blocmail.com")
- end
- it "searches AddressBook for Sally" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Sally")
- expect(entry).to be_a Entry
- check_entry(entry, "Sally", "555-675-5555", "sally@blocmail.com")
- end
- it "searches AddressBook for Sussie" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Sussie")
- expect(entry).to be_a Entry
- check_entry(entry, "Sussie", "555-555-2036", "sussie@blocmail.com")
- end
- it "searches AddressBook for Billy" do
- book.import_from_csv("entries.csv")
- entry = book.binary_search("Billy")
- expect(entry).to be_nil
- end
- end
- //address_book.rb
- def binary_search(name)
- lower = 0
- upper = entries.length - 1
- # #2
- while lower <= upper
- # #3
- mid = (lower + upper) / 2
- mid_name = entries[mid].name
- # #4
- if name == mid_name
- return entries[mid]
- elsif name < mid_name
- upper = mid - 1
- elsif name > mid_name
- lower = mid + 1
- end
- end
- # #5
- return nil
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement