有关在某个数组中查找一个值的算法(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
- 有关在某个数组中查找一个值的算法(Python实现)
- 折半查找------在一个升序的有序数组中查找某个具体的数字
- js 查找某个值在数组中出现的位置
- 在一个数组中避免重复查找的算法---omxcodec
- (核心算法)查找某个数在有序数组中(递增,含重复)第一次出现的下标
- 第十四题:在一个排序数组中查找一对数,使得其和等于某个值
- 查找列表中某个值的位置(python)
- 查找列表中某个值的位置(python)
- 在旋转数组中查找某个数
- 在一个有序的旋转数组中,查找给定值
- 在数组中查找一个值
- 在一个数组中找到等于某个数的组合
- java实现在二维数组中查找一个数
- 算法---从一个数组(或者集合中)找出和为某个值的下标
- 从有序数组中查找某个值(二分)
- 枚举 数组中查找某个值
- 关于二叉查找树中的某个节点的前趋和后继的算法(Python实现)
- QT在一个文件夹下面查找某个特定的内容(如查找一个字符串)
- 美团Android资源混淆保护实践
- Spring的init属性
- 通过 DevOps 整合开发和应用安全管道
- 三招教你用VLC Player 通过RTSP over Http 播放 live555 mediasever 来的流媒体
- DataTables 详细设置(1)
- 有关在某个数组中查找一个值的算法(Python实现)
- 对象可见性控制
- ContentProvider 与Uri 深入解析
- codeforces 615D
- 是时候把邮件发送时间机动化处理了
- 对程序员的建议
- 如何与 DevOps 为伍?
- 二、排序(时间复杂度 O(nlogn))
- 查看php-fpm的进程和端口号