Я нашел сортировку нитей очень привлекательной для сортировки односвязных списков в постоянном пространстве, потому что это намного быстрее чем, например, сортировка вставкой.
Я понимаю, почему это O (n)
в лучшем случае (список уже отсортирован) и O (n ^ 2)
в худший случай (список обратно отсортирован). Но почему O (n sqrt n)
в среднем случае? Если алгоритм не основан на делении пополам и имеет полиномиальную производительность в лучшем и худшем случае, средний случай равен O (n ^ m)
, где m
- среднее арифметическое наилучшего -случай и показатели наихудшего случая ( m = (1 + 2) / 2 = 3/2
, O (n sqrt n) = O (n ^ (3/2))
)?