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 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-1][0] < self.heapArray[i * 2][0]: # 修改 return i * 2 else: return i * 2 + 1i = len(alist) // 2 while (i > 0): pq.percDown(i) i = i - 1查找错误并修改
时间: 2024-02-14 18:05:17 浏览: 25
在minChild函数中,第7行代码需要修改为`if self.heapArray[i * 2][0] < self.heapArray[i * 2 + 1][0]:`,因为原代码中比较的是`self.heapArray[i * 2-1][0]`和`self.heapArray[i * 2][0]`,但是这是错误的,应该比较的是左右子节点的大小。修改后的代码如下:
```
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
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
i = len(alist) // 2
while (i > 0):
pq.percDown(i)
i = i - 1
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)