平分物品 python_python – 为什么平分比排序慢
我知道bisect正在使用二进制搜索来保持列表排序.但是我做了一个定时测试,正在读取和排序这些值.但是,与我的知识相反,保持价值然后对它们进行排序可以通过高差异赢得时机.有经验的用户可以解释一下这种行为吗?这是我用来测试时间的代码.
import timeit
setup = """
import random
import bisect
a = range(100000)
random.shuffle(a)
"""
p1 = """
b = []
for i in a:
b.append(i)
b.sort()
"""
p2 = """
b = []
for i in a:
bisect.insort(b, i)
"""
print timeit.timeit(p1, setup=setup, number = 1)
print timeit.timeit(p2, setup=setup, number = 1)
# 0.0593081859178
# 1.69218442959
# Huge difference ! 35x faster.
在第一个过程中,我逐个获取值,而不是仅仅排序a以获得类似文件读取的行为.并且非常努力地击败平分.
解决方法:
在bisect情况下,你的算法复杂性会更差……
在bisect情况下,您有N个操作(每个操作的平均成本为log(N)以查找插入点,然后是另外的O(N)步骤以插入项目).总复杂度:O(N ^ 2).
使用sort,您只需要一个Nlog(N)步骤(加上N O(1)步骤来构建列表).总复杂度:O(Nlog(N))
还要注意,sort是在非常优化的C代码中实现的(bisect不是那么优化,因为它最终会更频繁地调用各种比较函数……)
标签:python,performance,sorting,algorithm
来源: https://codeday.me/bug/20190724/1524736.html
平分物品 python_python – 为什么平分比排序慢相关推荐
- 水桶平分 java_关于java:桶排序算法代码问题
我需要在Java中实现以下内容. 输入:整数数组 输出:重新排列数组以具有以下内容: 假设原始数组中的第一个元素的值为x 在新数组中,假设x在位置I,即data[I] = x.然后,对所有x和所有j ...
- 【网易算法提前批】平分物品
文章目录 一.题目描述 二.解题思路 三.C++代码 Reference 一.题目描述 现在有n个物品,每一个物品都有一个价值,现在想将这些物品分给两个人,要求这两个人每一个人分到的物品的价值总和相同 ...
- 【Android控件布局】Layout 水平平分空间、垂直平分空间
今天在论坛看到有人提问,如何让两个按钮平分一行空间. 大概效果如下: 有人说,设置宽度固定大小,这样应该可以达到效果(本人没试),但是如果使用不同分辨率的手机来看,肯定会有问题,影响用户体验. 也有人 ...
- Android 水平平分布局和垂直平分布局
水平平分: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...
- 希尔排序算法python_python算法(六)希尔排序
python算法(六)希尔排序 希称排序 问题: 将一组乱序的数列,按从小到大(从大到小)的顺序重新排列. 方法: 设定一个初始增量, 对原始数列进行分组: 对每一个分组进行排序 设置一个更小的增量 ...
- MYSQL实现水平分表
mysql水平分表 本人主要以Navicat实现,具体想要高端点,可以用Sharing JDBC.Mycat去实现 水平分表 mysql水平分表 分库分表原理是什么? 为什么要分库分表? 二.水平分表 ...
- CIKM 2020 | 如何更为合适地评测推荐算法? Top-N物品推荐算法评测设置回顾
来源:RUC AI Box 本文约5200字,建议阅读10分钟 本文介绍了对于不同的实验设置对评价top-N商品推荐算法的影响,并设计了一个经验性的大规模实验. 1 引言 近十年里,top-N商品推荐 ...
- 推荐系统技术演进趋势:召回-排序-重排
来源:DataFunTalk 导读:推荐系统技术,总体而言,与 NLP 和图像领域比,发展速度不算太快.不过最近两年,由于深度学习等一些新技术的引入,总体还是表现出了一些比较明显的技术发展趋势.这篇文 ...
- mahout demo——本质上是基于Hadoop的分步式算法实现,比如多节点的数据合并,数据排序,网路通信的效率,节点宕机重算,数据分步式存储...
摘自:http://blog.fens.me/mahout-recommendation-api/ 测试程序:RecommenderTest.java 测试数据集:item.csv 1,101,5.0 ...
最新文章
- Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
- DevOps \u0026 SRE 必备技能清单
- 浅谈.Net WebService开发
- mov eax,dword ptr fs:[0] 指令
- html5 内嵌网页_如何分析并优化网页的性能?新梦想软件测试
- latex公式对齐_Word 写公式最方便的方法
- stl:空间配置器的标准接口
- C#基础 数据类型 类型转换
- C++中 sprintf函数的用法
- 区块链行业被攻击怎么办?
- vtigerCRM 是作为一种开源CRM软件
- 英语语法笔记Day7——并列主从句
- C#执行js中的函数的问题,以sohu邮箱登陆密码js的MD5为例
- macbook开机密码输入正确,却提示“密码错误”无法登陆解决办法
- 教你在word中为一句话同时加上横线和波浪线
- 微信小程序小技巧系列《一》幻灯片,tab导航切换
- 开源协议、开源贡献协议与OpenHarmony
- 全国社会媒体处理大会即将召开,一文详解四天议程精华
- 前端和后端是如何实现交互的
- (附源码)springboot 在线考试系统 毕业设计461317