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 )
0 commit comments