今天自己写索引堆的时候突然发现我在构造函数里的写法是这样的:
for(i=1;i<=capacity;i++) index[i]=i;
然后再insert里面写的:
void insert(int i, Item item) { data[index[i+1]] = item; count++; shiftUp( i+1 ); }
后来索引堆的排序出问题了,很是茫然。回过来看视频,我不知道是不是插入操作导致的,但对于这个视频的代码仍然有问题想不通。用户指定的索引 i 不是一个抽象的数组么,怎么会直接添加到data数组中呢,不是应该通过index[i]来放入么。