Python数组查找算法:随机、线性与递归二分法实现

清欢
清欢
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍了Python中在数组或字典内查找特定值的三种算法实现。第一种为随机索引遍历法,第二种为从末尾开始的线性查找,第三种为基于递归的二分查找策略。文章提供了对应的Python代码示例,展示了不同思路下的具体实现方式。

第一种算法思路:

第一步:随机生成一个数组的下标。

第二步:判断该下标对应的值是否等于目标查找值。如果相等,则终止程序,表示已找到;如果不等,则进入第三步。

第三步:判断是否已经随机遍历完数组的所有下标。如果是,则终止程序,表示未找到;如果不是,则返回第一步继续执行。

代码如下:

#本程序的功能是在字典中查找存在某个值
import random
di = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
key = 2
di1 = {}
while True:
 tmp = random.choice(di.keys()) #随机
 if di[tmp] == key:
  print 'ok'    #已找到key值
  break
 di1.update({tmp:di[tmp]}) #更新字典di1
 if di1 == di:    #判断是否随机到了字典中的所有值,来决定是否接着循环
  print 'no'
  break

第二种算法思路:

线性查找法,即在数组中顺序地查找目标key值。一旦找到即终止;若未找到,则一直查找到数组的末尾。

代码如下:

# -*- encoding:utf-8 -*-
li = [1,2,3,4,5,6]
key = 90
i = len(li)-1
while i >= 0:
 if li[i] == key:
  print '在li[%d]的处找到key值' % i
  break
 i -= 1
else:
 print '没找到'

第三种算法思路:

实际上是递归的二分查找算法,代码如下:

#python实现递归的二分查找算法
li = [1,2,3,4,5,6,7]
def find(li,key):
 if len(li)==1:
  if li[0] == key:
   return True
  return False
 m = len(li)/2
 if find(li[:m],key) or find(li[m:],key):
  return True
 else:
  return False
print find(li,8)

对于算法的代码实现还有待优化,对于上述三种算法的运行时间,因本人才疏学浅,还没有具体分析。

以上这篇Python实现在某个数组中查找一个值的算法示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表