def test_binary():
    a = [1, 5, 8, 12, 13]
    assert binary_search(a, 8) == 2
    assert binary_search(a, 1) == 0
    assert binary_search(a, 23) == -1
    assert binary_search(a, 1) == 0
    assert binary_search(a, 11) == -1
def remove_redirections(data):
  redirections = [] 
  redirections0 = []
  original_redirections = load_file(global_file_with_redirection)

  for r in original_redirections:
    red_array = r.split("\t")
    redirection_names = red_array[1].split("|")
    for rn in redirection_names:
      redirections.append("%s\t%s" % (rn.strip(), red_array[0]))
      redirections.append("%s\t%s" % (rn.strip().lower(), red_array[0]))
      redirections0.append(red_array[0])

  redirections0.sort()
  redirections.sort()

  original_redirections[:] = []
      
  for d in data:
    if d.wikipedia_url.strip() == "":
      continue
    not_redirection = binary_search(redirections0, d.wikipedia_url)
    if not_redirection is -1:
      wiki_key = d.wikipedia_url.replace("http://en.wikipedia.org/wiki/", "").replace("_", "")
      final_url = binary_search(redirections, wiki_key, cross_columns=True, col_sep="\t", finding_column=0, return_column=1)
      if final_url is not -1:
        d.wikipedia_url = final_url
        return
      wiki_key = d.wikipedia_url.replace("http://en.wikipedia.org/wiki/", "").replace("_", "").lower()
      final_url = binary_search(redirections, wiki_key, cross_columns=True, col_sep="\t", finding_column=0, return_column=1)
      if final_url is not -1:
        d.wikipedia_url = final_url
        return
Example #3
0
    def test_binary_search(self):
        arr1 = [-9, -8, -6, -4, -3, -2, 0, 1, 2, 3, 5, 7, 8, 9]
        arr2 = []

        self.assertEqual(binary_search(arr1, -8), 1)
        self.assertEqual(binary_search(arr1, 0), 6)
        self.assertEqual(binary_search(arr2, 6), -1)
        self.assertEqual(binary_search(arr2, 0), -1)
def stress():
    MAX_EL = 1000
    MAX_I = 20000

    a = list(range(MAX_EL, 10000 + MAX_EL))
    i = random.randint(1, MAX_I)

    bin = binary_search(a, i)
    lin = linear_search(a, i)
    if bin != lin:
        print(i)
        print(a)

    while bin == lin:
        if i < 1500:
            print(i, len(a))
        a = list(range(MAX_EL, 10000 + MAX_EL))
        i = random.randint(1, MAX_I)
        bin = binary_search(a, i)
        lin = linear_search(a, i)

    print(i)
    print(a)
    def test_binary_search_recursive(self):
        self.assertIsNone(binary_search(BinarySearchTest.test_list_1, 0))

        self.assertIsNone(binary_search(BinarySearchTest.test_list_2, -1))
        self.assertEqual(binary_search(BinarySearchTest.test_list_2, 1), 0)

        self.assertEqual(binary_search(BinarySearchTest.test_list_3, 1), 0)
        self.assertEqual(binary_search(BinarySearchTest.test_list_3, 2), 1)

        for i in range(BinarySearchTest.test_list_4_len):
            self.assertEqual(binary_search(BinarySearchTest.test_list_4, i), i)
def add_alternative_by_wiki(freebase):
  original_alternatives = load_file(global_source_of_alternate_names)

  alternatives = []

  for a in original_alternatives:
    a_array = a.split("\t")
    alternatives.append("%s\t%s" % (a_array[0], a_array[1]))

  alternatives.sort()

  for f in freebase:
    alt_ames = binary_search(alternatives, f.wikipedia_url, cross_columns=True, col_sep="\t")

    if alt_ames and alt_ames is not -1:
      new = alt_ames.split(global_array_separator)

      for n in new:
        if n.strip() and n not in f.alias:
          f.alias.append(n)
 def test_binary_search_when_target_not_in_collection(self):
     self.assertEquals(-1, binary_search(self.collection, 5))
     self.assertEquals(-1, binary_search(self.collection, -1))
     self.assertEquals(-1, binary_search(self.collection, 0))
     self.assertEquals(-1, binary_search(self.collection, 99))
 def test_binary_search_correct_position_when_target_found(self):
     self.assertEquals(2, binary_search(self.collection, 13))
     self.assertEquals(0, binary_search(self.collection, 11))
     self.assertEquals(8, binary_search(self.collection, 19))
     self.assertEquals(7, binary_search(self.collection, 18))
Example #9
0
import cProfile

from binary_search import *
from linear_search import *

big_list = list(range(10000000))
print(len(big_list))

print(binary_search(big_list, 10000000))
print(linear_search(big_list, 10000000))

cProfile.run('binary_search(big_list, 10000000)')
cProfile.run('linear_search(big_list, 10000000)')
Example #10
0
from binary_search import *

test_list = [1, 3, 9, 11, 15, 19, 29]
test_val1 = 25
test_val2 = 15
print binary_search(test_list, test_val1)
print binary_search(test_list, test_val2)
Example #11
0
 def test_binary_search(self):
     self.assertFalse(binary_search([1,2,3], 4))
     self.assertTrue(binary_search([1,2,3], 1))
 def testIsNeedleNotInArray(self):
     self.assertEqual(binary_search([1, 2, 3, 4], 5), None)
 def testIsNeedleInArray(self):
     self.assertEqual(binary_search([1, 2, 3, 4], 3), 2)
def test_stress_binary():
    a = list(range(0, 101))
    for i in range(200):
        assert binary_search(a, i) == linear_search(a, i)
Example #15
0
 def test_binary_search(self):
     self.assertEqual(binary_search(self.list, 0, 10, 4), 3)
     self.assertEqual(binary_search(self.list, 0, 10, 1), 0)
     self.assertEqual(binary_search(self.list, 0, 10, 10), 9)
     self.assertEqual(binary_search(self.list, 0, 10, 6), 5)
     self.assertEqual(binary_search(self.list, 0, 10, 11), False)