我有一个数组 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/