Python寻找给定序列中相差最小的两个数字

2017-02-13 董付国 Python小屋 Python小屋

import random


def getTwoClosestElements(seq):
    #先进行排序,使得相邻元素最接近
    #相差最小的元素必然相邻
    seq = sorted(seq)
    #无穷大
    dif = float('inf')
    #遍历所有元素,两两比较,比较相邻元素的差值
    #使用选择法寻找相差最小的两个元素
    for i,v in enumerate(seq[:-1]):
        d = abs(v - seq[i+1])
        if d < dif:
            first, second, dif = v, seq[i+1], d
    #返回相差最小的两个元素
    return (first, second)


seq = [random.random() for i in range(20)]
print(seq)
print(sorted(seq))
print(getTwoClosestElements(seq))