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
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))
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)')
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)
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)
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)