Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. describe "#binary_search" do
  2. it "searches AddressBook for a non-existent entry" do
  3. book.import_from_csv("entries.csv")
  4. entry = book.binary_search("Dan")
  5. expect(entry).to be_nil
  6. end
  7. end
  8.  
  9. it "searches AddressBook for Bill" do
  10. book.import_from_csv("entries.csv")
  11. entry = book.binary_search("Bill")
  12. expect(entry).to be_a Entry
  13. check_entry(entry, "Bill", "555-555-3454", "bill@blocmail.com")
  14. end
  15.  
  16. it "searches AddressBook for Bob" do
  17. book.import_from_csv("entries.csv")
  18. entry = book.binary_search("Bob")
  19. expect(entry).to be_a Entry
  20. check_entry(entry, "Bob", "555-555-5564", "bob@blocmail.com")
  21. end
  22.  
  23. it "searches AddressBook for Joe" do
  24. book.import_from_csv("entries.csv")
  25. entry = book.binary_search("Joe")
  26. expect(entry).to be_a Entry
  27. check_entry(entry, "Joe", "555-555-5532", "joe@blocmail.com")
  28. end
  29.  
  30. it "searches AddressBook for Sally" do
  31. book.import_from_csv("entries.csv")
  32. entry = book.binary_search("Sally")
  33. expect(entry).to be_a Entry
  34. check_entry(entry, "Sally", "555-675-5555", "sally@blocmail.com")
  35. end
  36.  
  37. it "searches AddressBook for Sussie" do
  38. book.import_from_csv("entries.csv")
  39. entry = book.binary_search("Sussie")
  40. expect(entry).to be_a Entry
  41. check_entry(entry, "Sussie", "555-555-2036", "sussie@blocmail.com")
  42. end
  43.  
  44. it "searches AddressBook for Billy" do
  45. book.import_from_csv("entries.csv")
  46. entry = book.binary_search("Billy")
  47. expect(entry).to be_nil
  48. end
  49. end
  50.  
  51.  
  52. //address_book.rb
  53.  
  54. def binary_search(name)
  55.  
  56. lower = 0
  57. upper = entries.length - 1
  58.  
  59. # #2
  60. while lower <= upper
  61. # #3
  62. mid = (lower + upper) / 2
  63. mid_name = entries[mid].name
  64.  
  65. # #4
  66. if name == mid_name
  67. return entries[mid]
  68. elsif name < mid_name
  69. upper = mid - 1
  70. elsif name > mid_name
  71. lower = mid + 1
  72. end
  73. end
  74.  
  75. # #5
  76.  
  77. return nil
  78. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement