python - 寻找最小差异

标签 python arrays algorithm sorting minimum

我有一个数组 A=[a1,a2,a3,a4,a5...],我想找到该数组的两个元素,例如 A[i] 和 A[j],使得 i 小于j 和 A[j]-A[i] 是最小的。

这段代码可以完成这项工作吗:

def findMinDifference(A):
    Unsorted=[]
    minDiff=1000000
    Unsorted=A
    Sorted=quickSort(A)
    for i in range(0,len(Sorted)):
        if i>=1:
         SmallElement=Sorted[i-1]
         indexOfSmaller=Unsorted.index(SmallElement)
         BigElement=Sorted[i]
         indexOfBig=Unsorted.index(BigElement)
        if indexOfSmaller<inexOfBig:
             diff=Sorted[i]-Sorted[i-1]
             if diff<minDiff:
                 minDiff=diff
    return minDiff

最佳答案

您的代码可以稍微更新一下:

a = [1,2,5,9,10,20,21,45]
a, size = sorted(a), len(a)

res = [a[i + 1] - a[i] for i in xrange(size) if i+1 < size]

print "MinDiff: {0}, MaxDiff: {1}.".format(min(res), max(res))

用两个词来说 - 查找最小或最大差异可以简化为获取列表的最小/最大元素,该列表由排序的原始值列表中每对元素的差异组成

关于python - 寻找最小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606537/

相关文章:

arrays - 无限更改以获得相等的数组

c - C语言删除数组中多个元素的算法

python - 使用 cv2/pytesseract 增强数字识别的局部对比度

python - 多个异步上下文管理器

python - 使用 XLRD 验证单元格值

c - 为什么我的线程合并排序比基本的递归合并排序慢? [复制]

algorithm - 区间覆盖并集

python - 初始化由字符和数字组成的字典的最优雅方法是什么

javascript - PHP 脚本不断以字符串形式返回数值

javascript - 使用 Lodash 填充数组