老师程序里面的方法注释:“将最大索引堆中索引为i的元素修改为newItem”跟我理解的不一样。我的理解是:索引i是针对一个最大堆而言的,最大堆的索引是从1开始的,我觉得这个change方法应该是对最大堆从第1个索引开始的第i个索引对应值的修改,而不应该是对data里面的第i个索引对应值的修改,因为堆对象的data数组的元素在此之前一直没有改变,一般情况下不满足最大堆的性质,如果直接data[i+1]=newValue,我觉得跟注释所表达的意思不一致吧。
按照老师的注释意义,我觉的应该是这个意思?
public void change(int i, Item newValue) {
datas[indexes[i]] = newValue;
shiftUp(i);
shiftDown(i);
}