先排序,再。。。(毕竟归并排序的时间复杂度仅为 O(nlogn)O(n\log n))排序的幽灵。排序和查找真是一对好基友。

来看基础版本:

from random import randrange
seq = [randrange(10**10) for _ in range(100)]
dd = float('inf')
for x in seq:for y in seq:if x == y: continued = 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]:continued = abs(seq[i]-seq[j])if dd > d:x, y, dd = seq[i], seq[j], d

仍然是平方级的操作。

首先我们知道,处理一个已经排序的序列相对会容易一些,也即,已排序的序列中最接近的两个数必然是相邻的,而排序通常是一个线性对数级(O(nlogn)O(n\log n))的操作,且一次排序,一劳永逸,可以多次查找、

seq.sort()
for i in range(len(seq)-1):x, y = seq[i], seq[i+1]if x == y: continued = abs(x-y)if dd > d:xx, yy, d = x, y, d

新的解决方案的运行时间是线性对数级的,由排序操作主导

Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数相关推荐

  1. python找色_python实现从一组颜色中找出与给定颜色最接近颜色的方法

    本文实例讲述了python实现从一组颜色中找出与给定颜色最接近颜色的方法.分享给大家供大家参考.具体分析如下: 这段代码非常有用,可以找到指定颜色相似的颜色,比如有一组8个颜色,现在给定一个rgb格式 ...

  2. python实现从一组颜色中找出与给定颜色最接近颜色的方法

    本文实例讲述了python实现从一组颜色中找出与给定颜色最接近颜色的方法.分享给大家供大家参考.具体分析如下: 这段代码非常有用,可以找到指定颜色相似的颜色,比如有一组8个颜色,现在给定一个rgb格式 ...

  3. 盘点一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列

    一.前言 前几天在Python交流群中遇到一个问了一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列的问题,觉得还挺有用的,这里拿出来跟大家一起分享下. 数据截图如下 ...

  4. python指定元素对调_Python 将列表中的头尾两个元素对调

    Python 将列表中的头尾两个元素对调 定义一个列表,并将列表中的头尾两个元素对调. 例如:对调前 : [1, 2, 3] 对调后 : [3, 2, 1]def swapList(newList): ...

  5. python 已知一个字符,在一个list中找出近似值或相似值, 模糊匹配

    已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接 ...

  6. python随机生成20个整数列表、找出被7除余5_the date of departure

    [简答题]Lab5.2:编写程序,要求用户输入一个大写英文字母,根据字符在字母表里的顺序位置N,输出一个高度为N的金字塔图形,使底部那行的中间字母是用户输入的字母. (10.0分) [简答题]BMI计 ...

  7. EXCEL 中找出两个sheet相同列

    在工作中我们可能经常会使用到,在sheet1->A 列数据同时在sheet2->A列出现.那么我们用EXCEL中怎么找出他们呢? 在EXCEL中可以采用VLOOKUP函数来完成.具体操作如 ...

  8. js-FCC算法Smallest Common Multiple。找出两个参数和它们之间的连续数字的最小公倍数。...

    存档. 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. function smallestCommons(arr) {//分解质因数法,分解为若干个质数相乘var arrratio=[]; ...

  9. Excel中找出两列中相同的值

    第一步:选中要对比的H列和J列 第二步:点击"开始",然后点击"条件格式"并选择"突出显示单元格规则" 第三步: 选中"重复值&q ...

最新文章

  1. C(第一个C程序) 和 C++ (第一个C++程序)对比碰撞
  2. 夺命雷公狗---linux NO:17 linux系统查找
  3. tensorflow就该这么学--5( 神经网络基础)
  4. java listfiles 使用_Java中list()和listFiles()方法之间的区别
  5. dbus的代码范例 linux_linux-将结构传递给dbus方法的工具?
  6. 103_Power Pivot 透视表中空白标签处理及百分比
  7. 认识和学习orchestrator之基本使用篇
  8. Failed to maintain projects LRU cache for dir *********
  9. 高二获全奖跳级进哈佛,29岁坐拥数亿身家,这位曾让马云畏惧的“天才神童”现在怎么样了?...
  10. websphere html 缓存,如何清除WebSphere类缓存
  11. dlna投屏html源码,DLNA(一)
  12. 计算机本地磁盘设密码,电脑硬盘,教您电脑硬盘怎么设置密码
  13. PS经典教程:从零开始设计一个漂亮的网页
  14. svn tour cycle
  15. 第一天-2.安装vmware虚拟机kali系统
  16. rewrite常用的.htaccess规则举例(rewrite伪静态规则大全)
  17. 【图文并茂】如何进行Win7系统的重装
  18. 技嘉z68主板驱动下载地址
  19. iOS调试技巧(转载)
  20. 基于单片机的智能手环系统设计

热门文章

  1. get_json_object与json_tuple 的解析
  2. mysql explain ref const_MySQL EXPLAIN 详解
  3. linux下ip地址转换整形,Linux中ip地址结构和ip地址的转换
  4. python多元回归因子选取_Python中的多元回归(带因子选择)
  5. php中的 i详解,浅析PHP中的i++与++i的区别及效率
  6. stringstream常见用法介绍
  7. Python基础——input交互功能
  8. 一篇文章告诉你如何寻找水王(数组中存在超过一半的数字)
  9. SpringCloud-服务的消费者(rest+ribbon)
  10. 一篇不错的vim命令入门