Встречается на собеседованиях • сегодня
Может ли алгоритм с квадратичной сложностью быть быстрее алгоритма со сложностью O(nlogn)
Да, может. Асимптотическая сложность описывает поведение алгоритма при больших n, но не учитывает константы и меньшие члены. На практике при малых n алгоритм с O(n²) может быть быстрее из-за меньших накладных расходов.
Пример:
python
# Квадратичный алгоритм (вставками)
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >=0 and key < arr[j]:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
O(nlogn) алгоритм (слиянием)
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr)//2
L = arr[:mid]
R = arr[mid:]
merge_sort(L)
merge_sort(R)
i = j = k = 0
while i < len(L) and j < len(R):
if L[i] < R[j]:
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j += 1
k += 1
while i < len(L):
arr[k] = L[i]
i += 1
k += 1
while j < len(R):
arr[k] = R[j]
j += 1
k += 1
text
Для малых массивов (n < 10-20) insertion_sort часто быстрее, несмотря на O(n²), так как merge_sort имеет больше накладных расходов на рекурсию и создание подмассивов.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы