计数、基数和桶排序的Python实现
来源:互联网 发布:手机办公软件 编辑:程序博客网 时间:2024/04/29 03:57
计数排序:
#! /usr/bin/env python#coding=utf-8import random,copyfrom collections import defaultdictdef count_sort(lst, key=lambda x: x): B,C = [], defaultdict(list) for x in lst: C[key(x)].append(x) for k in range(min(C),max(C)+1): B.extend(C[k]) return Bdef count_sort2(lst): # sort integers only B, C = lst[:], defaultdict(int) for x in lst: C[x] += 1 for k in range(min(C)+1,max(C)+1): C[k] = C[k] + C[k-1] for i in range(len(lst)-1,-1,-1): B[C[lst[i]]-1] = lst[i] C[lst[i]] = C[lst[i]] - 1 return B if __name__ =='__main__': lst = [random.randrange(20) for i in range(10)] lst2 = copy.deepcopy(lst) print(lst) lst2.sort() print(lst2) lst = count_sort2(lst) print(lst)
基数排序:
#! /usr/bin/env python#coding=utf-8import random,copydef radix_sort(lst,d): print("radix sorting...") for x in range(d): slots = [[] for _ in range(10)] for k in lst: slots[k/(10**x)%10].append(k) lst = [a for b in slots for a in b] print(lst) print("...sorting over!") return lstif __name__ =='__main__': lst = [random.randrange(1000) for i in range(10)] lst2 = lst[:] lst2.sort() print(lst) print(lst2) lst = radix_sort(lst,3) print(lst)
桶排序:
#! /usr/bin/env python#coding=utf-8import random,copydef insert_sort(lst): for i in range(1,len(lst)): cur_value = lst[i] while i > 0 and lst[i-1] > cur_value: lst[i] = lst[i-1] i = i - 1 lst[i] = cur_valuedef bucket_sort_helper(lst,n): # n --> bucket nums buckets = [[] for _ in range(n)] for x in lst: buckets[int(n*x)].append(x) B = [] for bucket in buckets: insert_sort(bucket) B.extend(bucket) return Bdef bucket_sort(lst): return bucket_sort_helper(lst,10) if __name__ == '__main__': lst = [int(random.random()*100)/100.0 for i in range(10)] lst2 = lst[:] lst2 = sorted(lst2) print(lst) print(lst2) lst = bucket_sort(lst) print(lst)
0 0
- 计数、基数和桶排序的Python实现
- 还是算法:高级排序算法:计数,基数和桶排序
- 三种线性排序算法(计数、基数、桶排序)的简单实现
- 三种线性时间O(n)排序算法 - 计数-基数-桶 - C++实现
- 计数排序、桶排序python实现
- 计数排序、桶排序python实现
- python实现计数排序、桶排序、基数排序
- Python实现计数排序
- python实现计数排序
- 【每日算法】计数&基数&桶&位图排序-简介
- 排序 模板+总结 【还差计数 基数 桶】
- 计数排序的实现(python)
- 基数间接排序的简单实现
- Java-十种内部排序实现(选择,冒泡,插入,希尔,堆,归并,快速,基数,计数,桶)及代码下载
- 排序算法,插入、快速、希尔、基数、归并排序的代码实现和效率分析
- 计数排序的理解和代码实现
- python 实现 计数排序 源代码
- 漫谈经典排序算法:五、线性时间排序(计数、基数、桶排序)
- tomcat部署多个网站
- 如何修复缺失Windows自带的exe文件(主要用于cmd) 如缺失SETX.exe
- Android常用工具类
- spark-1.2.0 集群环境搭建
- jQuery验证控件jquery.validate.js使用说明+中文API
- 计数、基数和桶排序的Python实现
- Callable和Future结合使用的一个例子
- 如果我们要将下表的数据添加到索引中
- 对几种主流编程语言的评价
- 八大排序算法
- 修改dcl程序,使它能够处理输入中的错误
- JAVA多线程实现的三种方式
- 我们只要开发新的Parser就能够将其添加到索引中,因此WEBUS依靠这种方式获得了很高的通用性
- 【BST】根据前序遍历的数组构造搜索二叉树