有关在某个数组中查找一个值的算法(Python实现)

来源:互联网 发布:安卓视频剪辑软件 编辑:程序博客网 时间:2024/06/11 03:57

第一种算法思路:

第一步:随机出来一个数组的下标
第二步:判断下标对应的值是否等于被查找的值,是的话终止,已找到,否的话转第三步。
第三步:判断是否随机完数组的所有下标,是的话终止,没找到,否的话转第一步。
代码如下:

#本程序的功能是在字典中查找存在某个值import randomdi = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}key = 2di1 = {}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 = 90i = len(li)-1while i >= 0:    if li[i] == key:        print '在li[%d]的处找到key值' % i        break    i -= 1else:    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 Falseprint find(li,8)

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

0 0
原创粉丝点击