分类算法分析方法

时间:2014-09-16 04:13:00

标签: python analysis

我有4种排序算法(线性,频率,二进制和哈希表),用于排序单词列表。

我需要分析每个比较的数量,给出 n 单词的列表并将它们相互比较。为此,我将计算每种算法在不同大小的列表上执行的比较。

我的方法是用整数模拟单词(这应该减少比较时间并使我的测试功能更容易生成范围)。我目前假设文本的平均词汇量是300字。以合理的频率重复20%,30%不太常见,剩下的50%是稀有的。

  

这种方法是否公平合理?即:它(合理地)将准确地表示从典型文本块复制的典型单词列表。

我用来模拟文本中单词列表的代码如下:

from random import randint, shuffle

def get_list(size):
    '''return list of psuedo random integers
       in a list of length size, to represent
       a typical block of text'''

    my_list = []

    #percent of words that are typically most common, common, rare
    most_common = 20
    common = 30
    rare = 50
    vocab = 300

    for word in range(0, int(size * (most_common / 100))):
        my_list.append(randint(0, 5))
    for word in range(0, int(size * (common / 100))):
        my_list.append(randint(0, 20))
    for word in range(0, int(size * (rare / 100))):
        my_list.append(randint(0, vocab))

    shuffle(my_list)
    return my_list

由于

1 个答案:

答案 0 :(得分:1)

总数为300时,您将无法看到性能上的任何显着差异。我相信你应该增加5000以上单词的输入数量。

通常,对于排序单词,您可以使用HashTable,因为它更有效并且可以节省空间。

如果您有预测文本的用例,您也可以查找“尝试”数据结构。