mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Added double linear search recursion (#2445)
* double linear search recursion * fixup! Format Python code with psf/black push Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
This commit is contained in:
parent
0dea049f44
commit
dc415ec14a
35
searches/double_linear_search_recursion.py
Normal file
35
searches/double_linear_search_recursion.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
def search(list_data: list, key: int, left: int = 0, right: int = 0) -> int:
|
||||
"""
|
||||
Iterate through the array to find the index of key using recursion.
|
||||
:param list_data: the list to be searched
|
||||
:param key: the key to be searched
|
||||
:param left: the index of first element
|
||||
:param right: the index of last element
|
||||
:return: the index of key value if found, -1 otherwise.
|
||||
|
||||
>>> search(list(range(0, 11)), 5)
|
||||
5
|
||||
>>> search([1, 2, 4, 5, 3], 4)
|
||||
2
|
||||
>>> search([1, 2, 4, 5, 3], 6)
|
||||
-1
|
||||
>>> search([5], 5)
|
||||
0
|
||||
>>> search([], 1)
|
||||
-1
|
||||
"""
|
||||
right = right or len(list_data) - 1
|
||||
if left > right:
|
||||
return -1
|
||||
elif list_data[left] == key:
|
||||
return left
|
||||
elif list_data[right] == key:
|
||||
return right
|
||||
else:
|
||||
return search(list_data, key, left + 1, right - 1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
|
@ -42,7 +42,7 @@ def binary_search(a_list: List[int], item: int) -> bool:
|
|||
if item < a_list[midpoint]:
|
||||
return binary_search(a_list[:midpoint], item)
|
||||
else:
|
||||
return binary_search(a_list[midpoint + 1:], item)
|
||||
return binary_search(a_list[midpoint + 1 :], item)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue
Block a user