Это действительно сводится к культурным различиям между математиками и разработчиками программного обеспечения.
Обычно математики используют 1 (один) в качестве индекса первого элемента вектора или первого столбца / строки матрицы.
По ряду (обоснованных) причин разработчики программного обеспечения используют 0 (ноль). И все современные основные языки программирования делают то же самое.
Возможно, вы встретили описание структуры данных / алгоритмов кучи в каком-то тексте, который был написан кем-то, кто предпочитает «математическое» соглашение соглашению «разработка программного обеспечения». Затем вы закодировали алгоритм в Java, который (как и большинство современных PL) использует массивы, начинающиеся с нуля.
Если вас это беспокоит, просто измените свой код, чтобы вычесть 1 из значений индекса.
Обратите внимание, что существуют исключения в области разработки программного обеспечения:
- FORTRAN, COBOL, RPG и несколько других языков программирования - см. Wikipedia .
- Нумерация параметров и столбцов в JDBC.
- Нумерация узлов в DOM API.
(Все веские причины, на которые я ссылался, сводятся к тому, что алгоритмы, включающие вычисления индекса, обычно проще, если нулем является индекс первого элемента. Эта статья объясняет это.)