当前位置: 首页 > 面试题库 >

了解如何在Python中创建堆

容鸿畴
2023-03-14
问题内容

例如collections.Count.most_common,Python中的函数使用该heapq模块返回文件中最常见单词的计数。

我已经跟踪了该heapq.py文件,但是在理解如何相对于假设的单词创建/更新堆方面遇到了一些麻烦。

因此,我认为对我来说最好的理解方法是弄清楚如何从头开始创建堆。

有人可以提供伪代码来创建表示字数的堆吗?


问题答案:

这是在这里找到的代码的略微修改版本:http : //code.activestate.com/recipes/577086-heap-
sort/

def HeapSort(A,T):
    def heapify(A):
        start = (len(A) - 2) / 2
        while start >= 0:
            siftDown(A, start, len(A) - 1)
            start -= 1

    def siftDown(A, start, end):
        root = start
        while root * 2 + 1 <= end:
            child = root * 2 + 1
            if child + 1 <= end and T.count(A[child]) < T.count(A[child + 1]):
                child += 1
            if child <= end and T.count(A[root]) < T.count(A[child]):
                A[root], A[child] = A[child], A[root]
                root = child
            else:
                return

    heapify(A)
    end = len(A) - 1
    while end > 0:
        A[end], A[0] = A[0], A[end]
        siftDown(A, 0, end - 1)
        end -= 1


if __name__ == '__main__':
    text = "the quick brown fox jumped over the the quick brown quick log log"
    heap = list(set(text.split()))
    print heap

    HeapSort(heap,text)
    print heap

输出量

['brown', 'log', 'jumped', 'over', 'fox', 'quick', 'the']
['jumped', 'fox', 'over', 'brown', 'log', 'the', 'quick']

您可以在此处将该程序可视化 http://goo.gl/2a9Bh



 类似资料:
  • 我对tries和DAWGs(直接无环字图)很感兴趣,我已经读了很多关于它们的东西,但我不明白输出trie或DAWG文件应该是什么样子。 null 我也会很感激一个DAWG和Trie的输出。 我不想看到带有相互链接的气泡的图形表示,我想知道一旦一组单词被转换为try或dawgs后的输出对象。

  • 问题内容: 我对尝试和DAWG(直接非循环字图)感兴趣,并且已经阅读了很多有关它们的信息,但我不知道输出trie或DAWG文件应该是什么样。 特里应该是嵌套词典的对象吗?每个字母分为几个字母,依此类推? 如果存在100k或500k条目,对这样的词典执行的查找会很快吗? 如何实现由多个单词组成的单词块,用-空格或空格分隔? 如何将单词的前缀或后缀链接到结构的另一部分?(对于DAWG) 我想了解最佳的

  • 问题内容: 如何在独立于平台的Python中创建GUID?我听说有一种在Windows上使用ActivePython的方法,但这仅是Windows,因为它使用COM。有没有使用普通Python的方法? 问题答案: Python 2.5及更高版本中的uuid模块提供了符合RFC的UUID生成。有关详细信息,请参见模块文档和RFC。 文件: Python 2:http://docs.python.or

  • 问题内容: 有没有办法在Python中声明常量?在Java中,我们可以按以下方式创建常量值: Python中上述Java常量声明的等效项是什么? 问题答案: 不,那里没有。你无法在Python中将变量或值声明为常量。只是不要更改它。 如果你正在上课,则等价于: 如果不是,那只是 但是你可能想看看Alex Martelli 编写的Python代码片段中的Constants。 从Python 3.8开

  • 问题内容: 我如何声明一个非常大的位数组,例如600万位? 问题答案: 您可以在http://pypi.python.org/pypi/bitarray/中查看有关此模块的更多信息。

  • 问题内容: 我有引用文件路径的此函数: 其中FILE_PATH是文件路径的字符串,即 我想在python脚本中使用字符串内容创建文件FILE_NAME.ext: 怎么办呢?Python脚本将放置在Linux盒子中。 问题答案: 有一个用于python的模块,但是创建一个简单的文件也可以解决这个问题: 现在,您可以使用以下方法对其进行写入: 使用模块,它可能看起来像这样: 使用完后,您有责任删除文件