From 470d4b0b2b702f6a3fba2527880055b7ca1cfb61 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Thu, 16 Apr 2026 14:22:01 -0400 Subject: [PATCH] Final changes to project 3 --- .../project_3_search.cpython-314.pyc | Bin 5195 -> 5218 bytes Project 3/project_3_search.py | 14 ++++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Project 3/__pycache__/project_3_search.cpython-314.pyc b/Project 3/__pycache__/project_3_search.cpython-314.pyc index 34af1a609d666aac7eef9333092b67bc5fa0c446..2125710db68ac1cc98e8b88e6b43559337677c28 100644 GIT binary patch delta 1258 zcma)6&2JM|5TCbS-f!>5c2YaU4oYb3CIul(X_O!#8X}>9Yqn@}=#r|UO$m))aZ)N( zNDY??RprAPA-Eyb3l~5LBo6!s^a!d%XjQ^3>Sdz{1#xNTtyye1F^8FX^XC2DZ+~yJ zf0Un>tzp~Jf$U;=W$s4P%Cp(#&?lDa$vxmHJuvUgv*zp&)0!7by2u;J)=xL@PY-&g z4?CErQIqQFt=2`=GZr-;7IjY@fQof@D?6pI8eU6vGavhuu`y5jf_=$6c_h`s;@(qu zZJSIdQVm{jl(_3Bw=B+|{Bc=2Huv4J8uqE%4<4Z6%O%)=tUSfmV!vYLnn%wciR8GX zfSZj{ajJstMp~TeknXxPasGH@#7h%&Yt72y6}9NRBE%)|rP&O?CI}dQW%Uc8gb&m? z95geyOWPdB@3o>;Tm6r$A`q=_PvB*3q3?(IbYz3+{5t+uru)(YetPxm%j4%Jo*6b~ z^jWDQGz2`Y|IYSf!5Fvr{VnzpWbuem&?SQ4(yo{BtdTDVl(x(hJaL;qsz@zWR4O+# zas z=JFi~BUT$Z6!9N3$Ex_k9AKP7@#h36xtgrq?cg11lgVPto`gH*{2Z$7~81g)p>x}7Qg`(CJymF^IZ z-XPs0O1_0F>7L$n8(|-tB1W8zl|ObormK9OD>goKhVhm2vE1Ne zi$m@fJmd!KL%ijdlz43K;Uo99_{iLW&90naxOlVcrue5hipMiGg*CX+ct3M^?*=KY%!FOb9gZ(HRDkdG4pjV*ZJw{xZ2Hf>em7|9^?z*8Bhf delta 1305 zcmZ`(&1(}u6n~S=CcB&6WVdZvn|>srYMZoLKVnt1hf*zKHN-7$1lNeBRTL@dwxWn1 z^`Ln15T1X49z7J5DhLXC6hsBT&ArbKHcQ)V5eBvYA^EtpcwKnEn$**-GiYswQ^#6D(>fIz>+UHHU5sEm+< zq*tW5K8#2aza!HrCysl)t1fM$aB>%QKd0db7~(J~b3dIg}u1 zlw=MS2-TGW9IBvbWsO0{pw03kb*}j-pk$=QmlRAxHnrsjz$lHhf{D6p6N0zo2D~gs zIa;SKux%{-rj{W1S)L3qai*aZ1T}=?$}#+;+$4i|KCpc)Tk$(5%-40;x_>Fbq~uDp zQh;TlF>HEz36(-{7%whG+Udrm8r`3!fysL6m=xQ|rZRKaM)^?L7M)wNC5>ZVR$;r^ zL#momfEKU-4K2EtSddvRNj1YFxn!z(*io9DgMueFS`chTjhiK;s(p1B>H#QtD;?L9 zY%If$@gG~>u}7;-7Cd-F3zH5!qjeC*slCf>TwvrvwNw|eRynW@oR?zB6x}1Uf@lXS z2*C7M;&S$;Q1Eef4J$2Qt-C4du#*gR(qg~O)a8~vj@yEpwt6i&6Lw>@(Qb5cW`&Dt zV;n4kw}UN#h#Ska;;UdnfQ(G9Qhl_gMr)XMlA#^!zjNDgcc|{4`u3Ifl42HF+Cb2f zsrIWW{Qwh+Eim|%3F9tq1>M{n>ETbmGUI9%h2gIMlF(7oRl#dX*sC|;TD`H&XN79? zcaq^`rPlP*ODp3MeUIoc6>&!IH=GR=@r%5`4k!`AUwXGVC!87^$JNFfJYcL69f@UM zFl-XTIV0-hxBNB!HtvM(4&0x7xN-LE)A)n)Z`2)luP*GDwdsKmijL3fX7q>g$0JW8 zj}AYZc-NnKukORM^=W)jKSDNRydj+IC+u&*{I`pQK9$l%0$%mnxwk^|N3V2ss4Rdt H!XM5bOtaMo diff --git a/Project 3/project_3_search.py b/Project 3/project_3_search.py index adc8d7b..fb340d2 100644 --- a/Project 3/project_3_search.py +++ b/Project 3/project_3_search.py @@ -60,9 +60,12 @@ class Search: self, arr: Sequence[int], target: int, - low: int, - high: int, + low: int = 0, + high: int | None = None, ) -> int: + if high is None: + high = len(arr) - 1 + if low > high: return -1 #base case: if low is greater than high, the target is not found @@ -75,7 +78,7 @@ class Search: else: return self.binary_search_recursive(arr, target, low, mid - 1) -def main() -> None: +def main(n: int = 1000) -> None: search = Search() #search object to call Search() class """ @@ -99,7 +102,7 @@ def main() -> None: Part 3: Uses the recursive search """ arr = sorted(search.generate_random_list(100)) #generate the list of 100 random integers and sort it for binary search - index = search.binary_search_recursive(arr, 42, 0, len(arr) - 1) #search for the value 42 using binary search and get the index of 42 + index = search.binary_search_recursive(arr, 42) #search for the value 42 using binary search and get the index of 42 print("Index of 42 in sorted array:", index) #print the index of 42 in the sorted array """ @@ -108,7 +111,6 @@ def main() -> None: At what number of queries does Sorting + Binary Search start to show an advantage over Linear Search?: Sorting + binary search shows an advantage at around 500 queries """ - n = 1000 arr = search.generate_random_list(n) #generate the list of n random integers for multiplier in [0.5, 1, 2, 4]: #I used a "multiplier" to avoid rewriting the code for each query @@ -129,7 +131,7 @@ def main() -> None: start = time.perf_counter() sorted_arr = sorted(arr) for q in queries: - search.binary_search_recursive(sorted_arr, q, 0, len(sorted_arr) - 1) + search.binary_search_recursive(sorted_arr, q) end = time.perf_counter() binary_time = end - start