Python实现在某个数组中查找一个值的算法示例

yipeiwu_com5年前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设计】。

相关文章

python发送多人邮件没有展示收件人问题的解决方法

背景: 工作过程中需要对现有的机器、服务做监控,当服务出现问题后,邮件通知对应的人 问题: 使用python 2.7自带的email库来进行邮件的发送,但是发送后没有展示收件人列表内容...

python解决汉字编码问题:Unicode Decode Error

前言 最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存文件。文档之前是由base64编码,导致所有汉字读取显示乱码。项目组把base64废弃之后,先后出现两个错误:...

详解Python3除法之真除法、截断除法和下取整对比

概述 在Python3中,数学运算中的除法被分为两种,分别是“真除法”,即无论任何类型相除的结果都会保留小数点,和我们实际的数学运算结果一致,而“截断除法”,则是无论任何类型相除的结果...

Python调用SQLPlus来操作和解析Oracle数据库的方法

先来看一个简单的利用python调用sqlplus来输出结果的例子: import os import sys from subprocess import Popen, PIPE...

Python中 传递值 和 传递引用 的区别解析

Python中 传递值 和 传递引用 的区别解析

对于不可变类型传递值(不会影响原数据)   不可变类型 对于可变类型传递引用(会影响原数据)   不可变类型传递引用 python3不可变类型 Number(数...