计数排序、桶排序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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被小仓鼠咬出血了该怎么办 仓鼠咬破手指流血了该怎么办 小仓鼠的手被棉花丝绑住了怎么办 荷兰猪如果不小心撞流血了怎么办 帮同事刷杯子但把杯子弄坏了怎么办 贵宾犬喜欢张开嘴巴跟人玩怎么办 鼻烟放了几天感觉跟受潮一样怎么办 两个月宝宝鼻屎堵住鼻子怎么办 肉包着智齿怎么办洗燥电影完整版 大腿内侧突然长黑痣越来越大怎么办 肚脐发炎、不脱落怎么办_妈网百科 老公出轨找个按摩的还不离婚怎么办 别人拿错钥匙装修好了房子怎么办 撞车后对方全责却不赔钱怎么办 我的世界国服客户端都是英文怎么办 下载的3d模型没有材质怎么办 写字时习惯把本子放歪该怎么办 被蚊子咬后留下硬疙瘩怎么办 吃冰镇西瓜导致呼吸不顺怎么办 吃冰镇西瓜嚓气导致呼吸不顺怎么办 在pr里面找不到做字幕的怎么办 电脑主机电源坏了接口坏了怎么办 邻居捡到我手机不给这种情况怎么办 婆婆总在儿子面前说媳妇坏话怎么办 试管准备取卵雌激素低该怎么办 订了火车票了忘记带身份证怎么办 网上买火车票忘记带身份证了怎么办 网上买的火车票忘记带身份证怎么办 深圳东站不卖站台票要送客怎么办 网吧刷身份证机器突然不好使怎么办 买了个衣服穿起来有点老气怎么办 美股主动退市股票钱怎么办 新注册的微信号被实名认证了怎么办 他出轨对我冷暴力孩子小怎么办 给情人发红包被老婆发现了怎么办一 情人和我出轨被他老婆发现了怎么办 情人老婆再次发我的存在怎么办 给情人还了账他老婆不承认怎么办 天堂1游戏限制IP登录次数怎么办 网易手机将军令绑不了太多号怎么办 当发生噩梦、梦魇等情况时该怎么办