常见排序算法_计数排序(Python3.6版)(count_sort)

计数排序

前言:其它类似文章可搜索-微信公众号-程序员小灰(不是我,是一个幽默,厉害的大佬),这篇文章只是我的学习成果记录。

漫画:什么是计数排序

暂时需要3个方法协助完成整个排序过程(当然你可能全部写在一个方法里面,博主强迫症)。

tips:如果用Python编程,博主个人建议把方法描述写在函数中,这样方便别人调用Python内置的help()方法查看您的方法描述。

直接上代码:

countList = []


def createCountList(needSortList):
    '根据需要排序的列表长度生成计数列表'
    for i in range(len(needSortList)):
        #计数列表最开始的元素全部为0
        countList.append(0)


def countElement(needSortList):
    '统计需要排序的列表的每一个元素出现的个数'
    for i in range(len(needSortList)):
        #计数列表的下标值等于需要排序的列表的元素值
        countList[needSortList[i]] += 1


def countSort(needSortList):
    '统计排序算法'
    for i in range(len(countList)):
        #根据需要排序的列表的每个元素出现的个数打印,相当于把需
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Apriori算法是一种常用的关联规则挖掘算法,它可以用来发现数据集中的频繁项集。Apriori算法的基本思想是通过迭代的方式,逐层筛选出频繁项集。 Apriori算法的原理: 1. 对数据集中的每个项进行计数,得到每个项的支持度; 2. 根据支持度,得到满足最小支持度要求的频繁项集; 3. 根据频繁项集,生成候选项集; 4. 根据候选项集,计算支持度,得到满足最小支持度要求的频繁项集; 5. 重复步骤3~4,直到没有满足最小支持度要求的频繁项集为止。 下面是Apriori算法的Python代码实现: ```python # 计算支持度 def support_count(data, itemset, min_support): count = 0 for d in data: if set(itemset).issubset(set(d)): count += 1 support = float(count) / len(data) return support >= min_support, count # 生成候选项集 def candidate_itemsets(itemsets, k): candidate = [] for i in range(len(itemsets)): for j in range(i + 1, len(itemsets)): l1 = list(itemsets[i])[:k - 2] l2 = list(itemsets[j])[:k - 2] l1.sort() l2.sort() if l1 == l2: candidate.append(itemsets[i] | itemsets[j]) return candidate # Apriori算法主函数 def apriori(data, min_support): itemsets = [] for d in data: for item in d: if not {item} in itemsets: itemsets.append({item}) itemsets.sort() freq_itemsets = [] k = 2 while True: candidate = candidate_itemsets(itemsets, k) freq_itemset = [] for c in candidate: is_freq, count = support_count(data, c, min_support) if is_freq: freq_itemset.append((c, count)) freq_itemsets += freq_itemset if len(freq_itemset) == 0: break itemsets = [f[0] for f in freq_itemset] k += 1 return freq_itemsets ``` 以上是Apriori算法的Python代码实现,使用时只需要传入数据集和最小支持度即可得到频繁项集。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值