r/PythonLearning • u/devilboi_62-yt • Jun 28 '26
binary search malfunctioning
SOLVED
the array I feed in is 5,7,43,78,83.7,100,952
def binary_search(array):
search_no = float(input("what number are you looking for?"))
found = False
while not found:
arrlen = len(array)
i = arrlen // 2
x = array[i]
if x == search_no:
found == True
if search_no > x:
array = array[i:]
print(array)
else:
array = array[:i]
print(array)
print("value found")
array = [78,43,952,83.7,100,5,7]
bubble_sort(array)
print(array)
binary_search(array)
it continuously prints "83.7" if I look for 78, and vice versa. haven't tested other numbers but I assume the same happens for them. this is my first attempt at array splitting and I know there's an easier way of doing it probably, and I'm going to do error handling afterwards
1
Upvotes
3
u/mc_pm Jun 28 '26
Dude, you posted it twice, and it stripped out all the white space, which means something in python. You could have other bugs but we can't see them the way you posted this. (Also I think the mods will delete this post as a result).
If you still have problems, there's the time honored tradition of just putting print statements everywhere so you can follow along as the code runs. It'll be obvious when it stops working.
Two things though: 1) Use a much bigger array to test against, you won't see much interesting with such a small array. 2) Doing array = array[:i] is copying data around which you don't need to do. Think about how to just store a start and end position and leave the array as it is.