Skip to content

Commit 0caa8af

Browse files
add class BinarySearch.py and test_binary_search.py
1 parent 60ff83e commit 0caa8af

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import unittest
2+
3+
class BinarySearch:
4+
def search(self, array, element):
5+
first = 0
6+
last = len(array) - 1
7+
8+
while first <= last:
9+
mid = (first + last)//2
10+
if array[mid] == element:
11+
return mid
12+
else:
13+
if element < array[mid]:
14+
last = mid - 1
15+
else:
16+
first = mid + 1
17+
18+
return False

classical_algorithms/python/SelectionSort.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ def _sort(self, array):
99
return array
1010

1111
for i in range(len(array)):
12-
minimum = i
1312
for j in range(i+1, len(array)):
1413
if array[j] < array[i]:
1514
array[i], array[j] = array[j], array[i]
Binary file not shown.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import unittest
2+
from classical_algorithms.python.BinarySearch import BinarySearch
3+
4+
class TestBinarySearch(unittest.TestCase):
5+
def test_binary_search(self):
6+
binary_search = BinarySearch()
7+
8+
print('None Input')
9+
self.assertRaises(TypeError, binary_search.search, None)
10+
11+
print('Empty Input')
12+
self.assertEqual(binary_search.search([], 1), False)
13+
14+
print('One Element')
15+
self.assertEqual(binary_search.search([25], 25), 0)
16+
17+
print('Two or More Elements')
18+
array = [0, 10, 15, 100, 150, 200, 203, 230]
19+
self.assertEqual(binary_search.search(array, 15), 2)
20+
21+
print('Two or More with negative Elements')
22+
array = [-20, -15, -5, 0, 10, 15, 100, 150, 200, 203, 230]
23+
self.assertEqual(binary_search.search(array, -15), 1)
24+
25+
print('Success: binary_search_search\n')
26+
27+
if __name__ == '__main__':
28+
unittest.main()

0 commit comments

Comments
 (0)