ubuntu 名称错误:未定义名称'DSAHeapEntry'

siv3szwd  于 2023-03-17  发布在  其他
关注(0)|答案(1)|浏览(127)
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还没有定义。

cedebl8k

cedebl8k1#

有3种方法可以解决此问题
1.使用heapsort.function()编写如下代码

import heapsort

arr = [ heapsort.DSAHeapEntry(5), heapsort.DSAHeapEntry(3),heapsort.DSAHeapEntry(8),heapsort.DSAHeapEntry(1), heapsort.DSAHeapEntry(2)]

heapsort.heapSort(arr)

for entry in arr:
    print(entry.value)

1.仅导入必需的函数

from heapsort import DSAHeapEntry,heapSort
    
arr = [ DSAHeapEntry(5), DSAHeapEntry(3), DSAHeapEntry(8),
        DSAHeapEntry(1), DSAHeapEntry(2)]
    
heapSort(arr)
    
for entry in arr:
    print(entry.value)

1.从堆排序导入所有内容编写代码如下

from heapsort import *
    
arr = [ DSAHeapEntry(5), DSAHeapEntry(3), DSAHeapEntry(8),
        DSAHeapEntry(1), DSAHeapEntry(2)]
    
heapSort(arr)
    
for entry in arr:
    print(entry.value)

所有方法对我都有效,但如果不起作用,请确保堆排序文件所在的目录中有__init__.py文件,如果不创建相同的空白文件
之前也有额外的选项卡

class DSAHeapEntry:
  • 我认为这只是stackoverflow中的一个错误,但如果www.example.com中有错误heapsort.py,那么它也不会工作 *

希望这个能帮上忙。

相关问题