import heapsort
# Create an array of DSAHeapEntry objects and populate it with values
arr = [DSAHeapEntry(5), DSAHeapEntry(3), DSAHeapEntry(8), DSAHeapEntry(1), DSAHeapEntry(2)]
# Sort the array using heap sort
heapSort(arr)
# Print the sorted array
for entry in arr:
print(entry.value)
这是我为实现以下代码而编写的测试代码:
class DSAHeapEntry:
def __init__(self, value):
self.value = value
def heapSort(arr):
n = len(arr)
# Build a max heap
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
# Extract elements from the heap in descending order
for i in range(n - 1, 0, -1):
arr[0], arr[i] = arr[i], arr[0]
heapify(arr, i, 0)
def heapify(arr, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and arr[left].value > arr[largest].value:
largest = left
if right < n and arr[right].value > arr[largest].value:
largest = right
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
即使我将这段代码导入到测试实现中,我还是会收到一个NameError,说DSAHeapEntry还没有定义。
1条答案
按热度按时间cedebl8k1#
有3种方法可以解决此问题
1.使用heapsort.function()编写如下代码
1.仅导入必需的函数
1.从堆排序导入所有内容编写代码如下
所有方法对我都有效,但如果不起作用,请确保堆排序文件所在的目录中有
__init__
.py文件,如果不创建相同的空白文件之前也有额外的选项卡
希望这个能帮上忙。