我在互联网上浏览了许多文章,以找到一个数组中的最小数目。根据文章,它们可以对数组进行n次迭代,但可以达到n / 2 +1次迭代的目的
这是我的代码
for index in range(0, int(len(myArray)/2)+1):
if minNum > myArray[index]:
minNum = myArray[index]
lastElement = - index - 1
if minNum > myArray[lastElement]:
minNum = myArray[lastElement]
商品代码
for element in myArray:
if minNum > element:
minNum = element
将我的代码更新为
for index in range(0, int(len(myArray)/2)+1):
if minNum > myArray[index]:
minNum = myArray[index]
if minNum > myArray[- index - 1]:
minNum = myArray[- index - 1]
他们使用n次迭代是否有任何原因
答案 0 :(得分:3)
您的代码开销很小,实际上比文章代码慢。
我制作了一个小程序,比较了两者的执行时间
选中this。
说明:
在传统风格中,
循环运行n次,每次进行1次比较。因此,突然来说,这需要O(n)时间。 在您的代码中,循环运行约n / 2次,每次进行2次比较,加上初始化
的开销 lastElement
因此,尽管两者都花费O(n)倍,但OP在大多数情况下提供的解决方案运行速度应较慢
在排序程度较高的情况下,OP的答案可能会运行得更快。处理排序的数组要快得多。