Я пытаюсь понять временную сложность различных структур данных и начал с сортировки кучи. Из того, что я прочитал, я думаю, что в целом люди согласны, что сортировка кучи имеет временную сложность O (nlogn); Однако мне трудно понять, как это произошло.
Большинство людей сходятся во мнении, что метод heapify принимает O (logn), а метод buildmaxheap принимает O (n), то есть O (nlogn), но почему heapify принимает O (logn)?
С моей точки зрения, heapify - это просто метод, который сравнивает левый и правый узел узла и корректно меняет их местами в зависимости от того, является ли он минимальной или максимальной кучей. Почему это занимает O (logn)?
Я думаю, что я что-то здесь упустил и был бы очень признателен, если бы кто-то мог объяснить мне это лучше.
Спасибо.