Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
来源:互联网 发布:hr数据分析 编辑:程序博客网 时间:2024/04/29 23:17
先排序,再。。。(毕竟归并排序的时间复杂度仅为
O(nlogn) )排序的幽灵。排序和查找真是一对好基友。
来看基础版本:
from random import randrangeseq = [randrange(10**10) for _ in range(100)]dd = float('inf')for x in seq: for y in seq: if x == y: continue d = abs(x-y) if dd > d: xx, yy, dd = x, y, d>>> xx, yy(15743, 15774)
两层嵌套,显然是一个平方级的操作。当然好比握手问题一样,存在大量重复比较的项:
for i in range(len(seq)-1): for j in range(i+1, len(seq)): if i == j or seq[i] == seq[j]: continue d = abs(seq[i]-seq[j]) if dd > d: x, y, dd = seq[i], seq[j], d
仍然是平方级的操作。
首先我们知道,处理一个已经排序的序列相对会容易一些,也即,已排序的序列中最接近的两个数必然是相邻的,而排序通常是一个线性对数级(
seq.sort()for i in range(len(seq)-1): x, y = seq[i], seq[i+1] if x == y: continue d = abs(x-y) if dd > d: xx, yy, d = x, y, d
新的解决方案的运行时间是线性对数级的,由排序操作主导。
0 0
- Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
- 【算法------01】从某个数字列表中找出两个彼此最接近但不相等的数
- 在列表中找出两个彼此最接近但不相等的数
- python实现从一组颜色中找出与给定颜色最接近颜色的方法
- 9.5位操作(三)——给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数
- 找出二进制表示中1的个数相同,且大小最接近的那两个数
- 找出升序数组中元素之和最接近于给定数值的两个数
- 从给定数组中找出最大的两个数——二分递归
- 算法8—不通过比较,找出两个数的最大值
- 数据结构——算法之(038)(找出两个数之间的素数的个数,并打印)
- 算法数据结构试题——在数组中找出已知和的组成数
- 算法数据结构试题——在数组中找出已知和的组成数
- 从数组中找出最大的前两个数
- 从一个数组中找出几个数,使其相加等于某个值的算法(数组元素可以重复)
- 【数据结构与算法分析】1.1 找出N个数字中第K大的数
- 动态集合中两个最接近的数的差值
- 如何在一堆正整数中(数组arr)找出与给定正整数(num)最接近的那个数(result)
- python—指定日期,从用户登录列表中找出用户该日期最可能的地理位置
- 哈理工OJ 2033 A Funny Game(博弈问题)
- [数据存储之五]JSON文件读取
- C指针一个小错误(2)-返回值不能是局部变量的指针
- [LeetCode][链表]Delete Node in a Linked List
- 经典 算法整理之希尔排序
- Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
- Spark MLlib 1.6 -- 特征抽取和变换
- 【源代码】基于扩展贝叶斯方法融合的作战效能评估研究
- Swift中文教程(十四) 初始化
- 十天学会web标准(DIV+CSS)系列(八)下拉及多级弹出菜单
- java写入文件
- Swift中文教程(十五) 析构
- 邓白氏编码申请经验分享
- Android内存信息:VSS、RSS、PSS、USS