54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
def binarySearch(array, element):
|
|
|
|
left = 0 # Левая граница
|
|
right = len(array) - 1 # Правая граница
|
|
middle = 0 # Середина
|
|
|
|
while left <= right:
|
|
middle = (left + right) // 2 # Шаг 1
|
|
if array[middle] == element:
|
|
return middle
|
|
|
|
if array[middle] < element: # Шаг 2
|
|
left = middle + 1
|
|
else:
|
|
right = middle - 1
|
|
|
|
return -1
|
|
|
|
|
|
def binarySearchWithInsert(array, element):
|
|
|
|
left = 0 # Левая граница
|
|
right = len(array) - 1 # Правая граница
|
|
middle = 0 # Середина
|
|
|
|
while left <= right:
|
|
middle = (left + right) // 2 # Шаг 1
|
|
if array[middle] == element:
|
|
return middle
|
|
|
|
if array[middle] < element: # Шаг 2
|
|
left = middle + 1
|
|
else:
|
|
right = middle - 1
|
|
|
|
# Вставляем элемент на позицию, согласно сортировке
|
|
array.insert(left, element)
|
|
|
|
return -1
|
|
|
|
|
|
def main():
|
|
array = [1, 2, 4, 6, 7, 9, 13, 15]
|
|
|
|
item = int(input("Find: "))
|
|
|
|
print(binarySearchWithInsert(array, item))
|
|
|
|
print(array)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|