JacksonSteel Ответов: 1

Почему int I в первом цикле for в heapsort начинается с (n/2-1)? почему не 0?


Почему int i в первом цикле for в heapsort начинается с (n/2-1)? Почему не 0?
Geeksforgeeks heapsort как

Что я уже пробовал:

Geeksforgeeks
Фейсбук
Переполнение стека

1 Ответов

Рейтинг:
0

OriginalGriff

Подумайте об этом.
n - количество элементов в коллекции, подлежащих сортировке.
Так что же это такое (n / 2 - 1)?
Просто: это середина коллекции и последний узел, который может иметь потомков, используя i = 1 ... n инклюзивный, а не 0 ... n - 1 включительно для индексов. Все узлы из n / 2 + 1 к n несколько листьев.

Алгоритмы кучи, как правило, используют 1 ... n нотация, потому что она делает расчет индексов дочерних узлов более чистым. При использовании этой нотации дочерние элементы узла x в 2x и 2x + 1, и родитель из x в x / 2. Если вы используете 0 ... (n - 1) затем дети узла x в 2x + 1 и 2x + 2, и родитель узла x в (x - 1) / 2.


CPallini

5.