This really boils down to a cultural difference between mathematicians and software engineers.
Conventionally, mathematicians use 1 (one) as the index of the first element of an vector or first column / row of a matrix.
For a number of (sound) reasons, software engineers use 0 (zero) instead. And all modern mainstream programming languages do likewise.
You've probably encountered a description of the heap data structure / algorithms in some text that was written by someone who prefers the "mathematical" convention to the "software engineering" convention. Then you've coded the algorithm in Java which (like most modern PLs) uses zero-based arrays.
If you find this disturbing, simply modify your code to subtract 1 from the index values.
Note that there are exceptions in the software engineering field:
- FORTRAN, COBOL, RPG and a few other programming languages - see Wikipedia.
- Parameter and column numbering in JDBC.
- Node numbering in the DOM API.
(The sound reasons that I referred to all boil down to the fact that algorithms involving index calculations are generally simpler if the zero is index of the first element. This article explains it.)