Скачиваний:
9
Добавлен:
10.11.2023
Размер:
4.21 Кб
Скачать
import random
import time


# Реализация метода поиска Фибоначчи
def fibonacci_search(arr, x):
n = len(arr)
fib_m_minus_2 = 0
fib_m_minus_1 = 1
fib_current = fib_m_minus_1 + fib_m_minus_2

while (fib_current < n):
fib_m_minus_2 = fib_m_minus_1
fib_m_minus_1 = fib_current
fib_current = fib_m_minus_1 + fib_m_minus_2

offset = -1

while (fib_current > 1):
i = min(offset + fib_m_minus_2, n - 1)

if (arr[i] < x):
fib_current = fib_m_minus_1
fib_m_minus_1 = fib_m_minus_2
fib_m_minus_2 = fib_current - fib_m_minus_1
offset = i

elif (arr[i] > x):
fib_current = fib_m_minus_2
fib_m_minus_1 = fib_m_minus_1 - fib_m_minus_2
fib_m_minus_2 = fib_current - fib_m_minus_1

else:
return i

if (fib_m_minus_1 and arr[offset + 1] == x):
return offset + 1

return -1


# Функция добавления элемента в массив
def add_element(arr, x):
arr.append(x)
arr.sort()


# Функция поиска элемента в массиве с использованием метода поиска Фибоначчи
def find_element_fibonacci(arr, x):
return fibonacci_search(arr, x)


# Функция поиска элемента в массиве с использованием встроенного поиска Python
def find_element_builtin(arr, x):
if x in arr:
return arr.index(x)
else:
return -1


# Функция удаления элемента из массива
def delete_element(arr, x):
if x in arr:
arr.remove(x)
return True
else:
return False


# Генерация случайных данных
random.seed(0)
arr = [random.randint(1, 10000000) for _ in range(10000000)]
arr.sort()

while True:
print("\nМеню:")
print("1. Добавить элемент")
print("2. Найти элемент (метод Фибоначчи)")
print("3. Найти элемент (встроенный поиск Python)")
print("4. Удалить элемент")
print("5. Выйти")

choice = input("Выберите действие: ")

if choice == '1':
x = int(input("Введите элемент для добавления: "))
add_element(arr, x)
print(f"Элемент {x} добавлен в массив.")
elif choice == '2':
x = int(input("Введите элемент для поиска (метод Фибоначчи): "))
start_time = time.time()
result = find_element_fibonacci(arr, x)
end_time = time.time()
if result != -1:
print(f"Элемент {x} найден на позиции {result}.")
else:
print(f"Элемент {x} не найден.")
print(f"Время выполнения поиска Фибоначчи: {end_time - start_time} секунд.")
elif choice == '3':
x = int(input("Введите элемент для поиска (встроенный поиск Python): "))
start_time = time.time()
result = find_element_builtin(arr, x)
end_time = time.time()
if result != -1:
print(f"Элемент {x} найден на позиции {result}.")
else:
print(f"Элемент {x} не найден.")
print(f"Время выполнения встроенного поиска Python: {end_time - start_time} секунд.")
elif choice == '4':
x = int(input("Введите элемент для удаления: "))
if delete_element(arr, x):
print(f"Элемент {x} удален из массива.")
else:
print(f"Элемент {x} не найден в массиве.")
elif choice == '5':
break
else:
print("Некорректный выбор. Пожалуйста, выберите действие из меню.")

Соседние файлы в папке Лабораторные 1-5 для Вариант 19