Skip to content

add exponential search algorithm #10732

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Oct 21, 2023
Merged
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
703f3b8
add exponential_search algorithm
kiarash8112 Oct 20, 2023
dbbe135
replace binary_search with binary_search_recursion
kiarash8112 Oct 20, 2023
1d79bd0
convert left type to int to be useable in binary_search_recursion
kiarash8112 Oct 20, 2023
ff30ae0
add docs and tests for exponential_search algorithm
kiarash8112 Oct 20, 2023
f66e566
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 20, 2023
16f58e1
move exponential_search to binary_search.py to pass github auto build…
kiarash8112 Oct 20, 2023
26b5283
Update searches/binary_search.py
kiarash8112 Oct 21, 2023
63bf03a
remove additional space searches/binary_search.py
kiarash8112 Oct 21, 2023
4ca8a6a
return single data type in exponential_search searches/binary_search.py
kiarash8112 Oct 21, 2023
b524404
add doctest mod searches/binary_search.py
kiarash8112 Oct 21, 2023
dc9155a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 21, 2023
afbd458
use // instread of int() convert searches/binary_search.py
kiarash8112 Oct 21, 2023
d8dfe74
change test according to new code searches/binary_search.py
kiarash8112 Oct 21, 2023
66a03cb
fix binary_search_recursion multiple type return error
Oct 21, 2023
d76119b
add a timeit benchmark for exponential_search
Oct 21, 2023
dc32f86
sort input of binary search to be equal in performance test with expo…
Oct 21, 2023
0b53cdd
raise value error instead of sorting input in binary and exonential s…
Oct 21, 2023
49744fb
Update binary_search.py
cclauss Oct 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
raise value error instead of sorting input in binary and exonential s…
…earch to fix bugs
  • Loading branch information
user committed Oct 21, 2023
commit 0b53cdd0d754c6e4274e15851c8145a33dde40df
13 changes: 10 additions & 3 deletions searches/binary_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,11 @@ def binary_search(sorted_collection: list[int], item: int) -> int | None:
>>> binary_search([0, 5, 7, 10, 15], 6)

"""
sorted_collection = sorted(sorted_collection)

if not all(
sorted_collection[i] <= sorted_collection[i + 1]
for i in range(len(sorted_collection) - 1)
):
raise ValueError("input of function is not sorted")
left = 0
right = len(sorted_collection) - 1

Expand Down Expand Up @@ -323,7 +326,11 @@ def exponential_search(sorted_collection: list[int], item: int) -> int:
>>> exponential_search([0, 5, 7, 10, 15], 6)
-1
"""
sorted_collection = sorted(sorted_collection)
if not all(
sorted_collection[i] <= sorted_collection[i + 1]
for i in range(len(sorted_collection) - 1)
):
raise ValueError("input of function is not sorted")
bound = 1
while bound < len(sorted_collection) and sorted_collection[bound] < item:
bound *= 2
Expand Down