Skip to content

Commit a807531

Browse files
committed
Added searching and sorting
1 parent 891a7cc commit a807531

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
2+
def binary_search_iter(arr, target):
3+
left, right = 0, len(arr) - 1
4+
5+
while left < right:
6+
mid = (left + right) // 2
7+
if arr[mid] == target:
8+
return True
9+
elif arr[mid] > target:
10+
right = mid - 1
11+
else:
12+
left = mid + 1
13+
14+
return False
15+
16+
def binary_search_rec(arr, target):
17+
left, right = 0, len(arr)
18+
if len(arr) < 1:
19+
return False
20+
21+
mid = (left + right) // 2
22+
if arr[mid] == target:
23+
return True
24+
elif target < arr[mid]:
25+
binary_search_rec(arr[:mid], target)
26+
else:
27+
binary_search_rec(arr[mid + 1:], target)
28+
29+
return False
30+
31+
32+
if __name__ == "__main__":
33+
print(binary_search_iter([1, 2, 3, 4, 5, 6], 5))
34+
print(binary_search_iter([1, 2, 5, 6], 8))
35+
print(binary_search_rec([1, 2, 5, 6], 3))
36+
print(binary_search_rec([1, 2, 5, 6], 5))
37+
38+
39+

Searching-and-sorting/bubble-sort.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
def bubble_sort(arr):
3+
4+
for i in range(len(arr) - 1):
5+
for j in range(len(arr) - i - 1):
6+
if arr[j] > arr[j + 1]:
7+
t = arr[j]
8+
arr[j] = arr[j + 1]
9+
arr[j + 1] = t
10+
11+
12+
if __name__ == "__main__":
13+
arr = [3, 6, 2, 5, 0, 5, 2, 9, 7]
14+
arr2 = [3, 1]
15+
bubble_sort(arr)
16+
print(arr)
17+
bubble_sort(arr2)
18+
print(arr2)
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
def selection_sort(arr):
3+
4+
for i in range(len(arr)):
5+
pos = i
6+
for j in range(i + 1, len(arr)):
7+
if arr[j] < arr[pos]:
8+
pos = j
9+
t = arr[pos]
10+
arr[pos] = arr[i]
11+
arr[i] = t
12+
13+
if __name__ == "__main__":
14+
arr = [2, 6, 4, 6, 7, 1, 0]
15+
arr2 = [3, 1]
16+
selection_sort(arr)
17+
selection_sort(arr2)
18+
print(arr)
19+
print(arr2)
20+

0 commit comments

Comments
 (0)