计数排序、桶排序python实现
来源:互联网 发布:年终奖数据表免费数据 编辑:程序博客网 时间:2024/04/28 15:20
计数排序在输入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语言实现在:计数排序(链接)
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;
0 0
- 计数排序、桶排序python实现
- 计数排序、桶排序python实现
- python实现计数排序、桶排序、基数排序
- Python实现计数排序
- python实现计数排序
- python 实现 计数排序 源代码
- 计数、基数和桶排序的Python实现
- 算法导论计数排序python实现
- 计数排序的实现(python)
- 计数排序(python)
- 计数排序的实现
- 计数排序简单实现
- 计数排序Java实现
- 计数排序-java实现
- 计数排序C实现
- C++实现计数排序
- 计数排序 实现
- Java实现计数排序
- Android假退出不是流氓行为
- uva10135 the trip
- C/C++ sort函数的用法
- WIN8 64位VS2010+cmake3.0编译OGRE1.8.1
- Remove Duplicates from Sorted List II
- 计数排序、桶排序python实现
- hdu1002A + B Problem II
- 大家好,新人报道!
- Oracle性能优化2- 依据场景选择技术
- 数组的归并排序(不使用辅助空间,递归)
- Morris遍历
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- sql server 小数据插入,根据表名生成insert 语句,求加固
- HDU-#1166 敌兵布阵 (树状数组&线段树)