我在互联网上搜索哪种排序算法最适合非常大的数据集.我发现许多人认为合并排序是最好的,因为它是公平的,并且确保时间复杂度为O(n log n)并且快速排序不安全:快速排序的变体也可以不安全,因为真实的数据集可以是任何东西.
如果两个元素的交换具有可忽略的时间成本,那么为什么我们不能选择堆排序作为这种情况下的最佳排序算法,因为它与O(n log n)?一致.
在Merge排序的情况下,它需要另一个O(n)空间; 如果数据非常大,那么我们就不能使用这种算法.
请告诉我:在这种情况下哪种算法应该是最好的?
安装nltk后我导入nltk然后使用nltk.download(),但当我尝试使用这个"来自nltk.book import*"时,它显示属性错误.从nltk.corpus import*和nltk import*工作正常
我是自然语言处理的新手,所以我不太了解这个请帮助
来自nltk.book import* *NLTK Book的介绍示例*
加载text1,...,text9和sent1,...,sent9
键入要查看的文本或句子的名称.
键入:'texts()'或'sents()'列出材料.
Traceback(最近一次调用最后一次):
文件"",第1行,in
from nltk.book import *
Run Code Online (Sandbox Code Playgroud)
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-packages \nltk\book.py",第19行,in
text1 = Text(gutenberg.words('melville-moby_dick.txt'))
Run Code Online (Sandbox Code Playgroud)
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-packages \nltk\text.py",第295行,在init中
tokens = list(tokens)
Run Code Online (Sandbox Code Playgroud)
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-
packages \nltk\corpus\reader\util.py",第233行,在len中
for tok in self.iterate_from(self._toknum[-1]): pass
Run Code Online (Sandbox Code Playgroud)
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-packages \nltk\corpus\reader\util.py",第291行,在iterate_from中
tokens = self.read_block(self._stream)
Run Code Online (Sandbox Code Playgroud)
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-packages \nltk\corpus\reader\plaintext.py",第117行,在_read_word_block words.extend中(self._word_tokenizer.tokenize(stream.readline( )))
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-packages \nltk\tokenize\regexp.py",第126行,在tokenize self._check_regexp()中
文件"C:\ Program Files(x86)\ Python 3.5\lib\site-packages \nltk\tokenize\regexp.py",第121行,在_check_regexp中自我._regexp …