なぜこれが理にかなっているのか誰かが私に説明できますか(それheap
はaであることに注意してくださいvector<int>
):
// Heap Sort
int parent = 0;
int leftChild = (parent * 2) + 1;
int rightChild = (parent * 2) + 2;
// This conditional works fine. Code doesn't enter block when heap.size() is zero.
while (leftChild < heap.size()) {}
でも:
// Code does enter this block when heap.size() is 0? Why?
while (leftChild < (heap.size() - 1) {}
がどういうわけか「真実」と解釈されているため、これが発生していると感じますが、その-1
方法がわかりませんleftChild
(デフォルトでは1
、0
または-1
.