在数组中找到最小数

时间:2018-12-02 06:23:18

标签: python python-3.x algorithm

我在互联网上浏览了许多文章,以找到一个数组中的最小数目。根据文章,它们可以对数组进行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次迭代是否有任何原因

1 个答案:

答案 0 :(得分:3)

您的代码开销很小,实际上比文章代码慢。

我制作了一个小程序,比较了两者的执行时间

选中this

说明:

在传统风格中,

循环运行n次,每次进行1次比较。因此,突然来说,这需要O(n)时间。 在您的代码中,循环运行约n / 2次,每次进行2次比较,加上初始化

的开销

lastElement

因此,尽管两者都花费O(n)倍,但OP在大多数情况下提供的解决方案运行速度应较慢

在排序程度较高的情况下,OP的答案可能会运行得更快。处理排序的数组要快得多。