def minChild(self, i): if i * 2 > self.currentSize: return -1 else: if i * 2 + 1 > self.currentSize: return i * 2 else: if self.heapArray[i * 2][0] < self.heapArray[i * 2 + 1][0]: return i * 2 else: return i * 2 + 1定义出现self.heapArray[i][0] > self.heapArray[mc][0]: IndexError: list index out of range问题如何修改
时间: 2024-02-14 14:05:16 浏览: 25
这个错误提示说明在执行 `self.heapArray[i][0] > self.heapArray[mc][0]` 时,索引 `i` 或 `mc` 超出了列表的范围,导致出现了 `IndexError: list index out of range` 异常。
这个问题可能是由于 `minChild` 函数返回的子节点索引有误导致的。建议添加一些调试打印语句,检查 `minChild` 函数是否正确地返回了子节点索引。例如,可以在 `minChild` 函数中添加以下打印语句:
```
def minChild(self, i):
if i * 2 > self.currentSize:
return -1
else:
if i * 2 + 1 > self.currentSize:
return i * 2
else:
if self.heapArray[i * 2][0] < self.heapArray[i * 2 + 1][0]:
return i * 2
else:
return i * 2 + 1
print("i:", i, "mc:", mc) # 添加这行打印语句
```
这样运行程序后,就可以看到每次 `minChild` 函数返回的 `i` 和 `mc` 的值,从而更容易找到问题所在。
另外,还可以在 `percDown` 函数中添加类似的打印语句,检查 `i` 和 `mc` 的值是否合法。例如:
```
def percDown(self, i):
while (i * 2) <= self.currentSize:
mc = self.minChild(i)
if mc < 0:
break
if self.heapArray[i][0] > self.heapArray[mc][0]:
self.heapArray[i], self.heapArray[mc] = self.heapArray[mc], self.heapArray[i]
i = mc
print("i:", i, "mc:", mc) # 添加这行打印语句
```
这样修改后,就可以更方便地调试代码,找到问题所在。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)