Учитывая список n сопоставимых элементов (например, числа или строку), оптимальный алгоритм для нахождения упорядоченного элемента i занимает O(n) время.
Выполняет ли Python изначально O(n) статистику по времени для списков, dicts, sets,...?
Ответ 1
Ни одна из упомянутых структур данных Python не реализует алгоритм статистики i-го порядка.
Фактически, это может не иметь особого смысла для словарей и множеств, учитывая тот факт, что оба не делают никаких предположений о упорядочении его элементов. Для списков не должно быть сложно реализовать алгоритм выбора который обеспечивает время работы O (n).
Ответ 2
Это не родное решение, но вы можете использовать NumPy partition, чтобы найти статистику k-го порядка в списке в O (n).
import numpy as np
x = [2, 4, 0, 3, 1]
k = 2
print('The k-th order statistic is:', np.partition(np.asarray(x), k)[k])
EDIT: это предполагает нулевую индексацию, т.е. "статистика нулевого порядка" выше 0.