Skip to content

Commit a6cdbbb

Browse files
authored
add binary alg
1 parent dfad2f2 commit a6cdbbb

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import time
2+
3+
4+
global steps
5+
steps = 0
6+
7+
print("[G] Generating List ")
8+
test_arr = [x for x in range(1,1_00_000_000+1)]
9+
print("[EG] List generated successfully")
10+
11+
12+
def bin_search(arr, tar, end, start=0):
13+
"""
14+
arr = array for search
15+
tar = target number for search
16+
start = location for start
17+
end = end location of search <len(arr)>
18+
"""
19+
global steps
20+
# print(f"start: {start}, end:{end}")
21+
for each in range(start, end):
22+
middle = (start+end)//2
23+
if arr[middle] > tar:
24+
steps += 1
25+
return bin_search(arr=arr, tar=tar, start=start, end=middle)
26+
elif arr[middle] < tar:
27+
steps += 1
28+
return bin_search(arr=arr, tar=tar, start=middle, end=end)
29+
else:
30+
return [f"Found :{arr[middle]} Using Binary algorithm, in {steps} steps", time.time() * 1000]
31+
32+
33+
def linear_search(arr, tar):
34+
start = time.time() * 1000
35+
for index,value in enumerate(arr):
36+
if value == tar:
37+
end=(time.time() * 1000)
38+
return f"Found {value} Using linear algorithm, in {index+1} steps, {end - start} ms"
39+
40+
41+
42+
43+
print(f"[S] Search Started!")
44+
start = time.time() * 1000
45+
result = bin_search(arr=test_arr, tar=9_9999_999, start=0, end=len(test_arr))
46+
print(result[0], f"in {result[-1] - start} ms")
47+
48+
49+
result = linear_search(arr=test_arr, tar=9_9999_999)
50+
print(result)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# جستجوی دودویی - باینری
2+
3+
4+
محمد یک لیست مرتب شده از اعداد بین 1 تا 10 میلیون دارد و میخواهد دنبال عدد 9,999,999 در لیست اعداد بگردد
5+
برنامه ای بنویسید که در این لیست با استفاده از الگوریتم باینری دنبال عدد مورد نظر بگردد و تایم جستجو رو نمایش دهد

0 commit comments

Comments
 (0)