
关于计数排序
发布日期:2021-05-09 05:28:25
浏览次数:4
分类:博客文章
本文共 612 字,大约阅读时间需要 2 分钟。
做笔试题看到有一个排序算法的时间复杂度要求为O(N),当时懵了没想到,后来想到有一个叫计数排序的排序算法貌似可以达到要求
- 记录一下实现的过程(计数排序)
def bucket_sort(array): maxnum = max(array) bucket = [0] * (maxnum + 1) for i in array: bucket[i] += 1 newarray = [] for j in range(len(bucket)): if bucket[j] != 0: for _ in range(bucket[j]): newarray.append(j) return newarrayarray = [5,6,3,2,1,65,2,0,8,0]print(bucket_sort(array))
实现的流程大概如下:
- 由于计数排序是根据下标以及下标所处位置的值来返回最后结果,所以速度比快排还要快。
- 所以首先要根据所给数组中最大元素的数值来创建“槽”的长度
- 然后遍历之前的数组,数组中有几就在“槽”的第几位上+1 (如果有两个0,那么桶中的第0个元素就要+2)
- 取出元素,循环遍历“槽”,输出“槽”下标位置元素的值(次数)的下标值(假如array[0]的值是3,那么输出三次0)
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月11日 12时33分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
程序员应该知道的97件事
2019-03-05
shell编程(六)语言编码规范之(变量)
2019-03-05
vimscript学习笔记(二)预备知识
2019-03-05
Android数据库
2019-03-05
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
2019-03-05
23种设计模式一:单例模式
2019-03-05
spring启动错误:Could not resolve placeholder
2019-03-05
invalid byte sequence for encoding
2019-03-05
技术美术面试问题整理
2019-03-05
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
js求阶乘
2019-03-05
python-day3 for语句完整使用
2019-03-05
基于LabVIEW的入门指南
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
C++ 函数重载
2019-03-05
使用mybatis-generator生成底层
2019-03-05
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2019-03-05