计数排序、桶排序python实现
2014-07-12 14:28
253 查看
计数排序在输入n个0到k之间的整数时,时间复杂度最好情况下为O(n+k),最坏情况下为O(n+k),平均情况为O(n+k),空间复杂度为O(n+k),计数排序是稳定的排序。
桶排序在输入N个数据有M个桶时,如果每个桶的数据接近N/M个且桶内使用基于比较的排序,则桶排序的时间复杂度为O(N+M*N/M*log(N/M)).如果N=M时,每个桶只有一个数据,时间复杂度降低为O(N).
桶排序的时间复杂度为O(N+M),桶排序是稳定的排序
1.计数排序
计数排序介绍及C语言实现在:计数排序(链接)
2.桶排序
桶排序介绍及C语言实现在:桶排序(链接)
桶排序在输入N个数据有M个桶时,如果每个桶的数据接近N/M个且桶内使用基于比较的排序,则桶排序的时间复杂度为O(N+M*N/M*log(N/M)).如果N=M时,每个桶只有一个数据,时间复杂度降低为O(N).
桶排序的时间复杂度为O(N+M),桶排序是稳定的排序
1.计数排序
计数排序介绍及C语言实现在:计数排序(链接)
def countsort(lista): leng=len(lista); c=[]; res=[]; for i in range(0,100): c.append(0); for i in range(0,leng): c[lista[i]]=c[lista[i]]+1; res.append(0); for i in range(0,100): c[i]=c[i-1]+c[i]; #c中此时存放的是小于或者等于i的数字的个数 for i in range(leng-1,-1,-1): res[c[lista[i]]-1]=lista[i]; c[lista[i]]=c[lista[i]]-1; return res; lista=[5,4,2,5,1,7]; #计数排序测试代码 lista=countsort(lista); print lista;
2.桶排序
桶排序介绍及C语言实现在:桶排序(链接)
class node: def __init__(self,k): self.key=k; self.next=None; def bucketsort(lista): h=[]; for i in range(0,10): h.append(node(0)); for i in range(0,len(lista)): tmp=node(lista[i]); map=lista[i]/10; p=h[map]; if p.key is 0: h[map].next=tmp; h[map].key=h[map].key+1; else: while(p.next !=None and p.next.key<=tmp.key): p=p.next; tmp.next=p.next; p.next=tmp; h[map].key=h[map].key+1; k=0; for i in range(0,10): q=h[i].next; while(q != None ): lista[k]=q.key; k=k+1; q=q.next; return lista; lista=[1,4,23,45,97,22,10,4]; #桶排序测试代码 bucketsort(lista); print lista;
相关文章推荐
- 计数排序、桶排序python实现
- 计数排序、桶排序python实现
- python实现计数排序
- 线性排序算法(计数排序,基数排序,桶排序)分析及实现
- 计数排序的实现(python)
- 计数、基数和桶排序的Python实现
- 算法导论计数排序python实现
- Python线性时间排序——桶排序、基数排序与计数排序
- python实现线性排序算法-计数排序
- Python实现八大排序算法(转载)+ 桶排序(原创)
- 计数排序和桶排序(Java实现)
- 桶排序(计数排序)原理以及java实现
- python 实现 计数排序 源代码
- 计数排序的另一种实现(Python)附python中defaultdict方法的使用
- Python线性时间排序——桶排序、基数排序与计数排序
- 计数排序和桶排序(Java实现)
- 桶排序之python实现源码
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- Python实现桶排序