判断数值是否在数列中的方法
2015-07-11 15:26
405 查看
问题:已知数值5,查找数值3是否在数列A=[5.8.10.13]中。
讨论此问题,有基本的两种解法,第一种是:线性查找,即直接比较数值是否在数列中,其算法如下:
#利用线性查找的方法查找List中的值
def search(ist,x):
for i in range(len(ist)):
if ist[1] == x:
return i
return -1
ist = [5,8,10,13]
print search(ist,5)
#显示List的下标
上面是第一种解法,不难看出其最坏的运行时间为:K0n+k1,所以算出其时间复杂度为On.
#利用两分查找法查找list中的值
def bi_search(lst, x):
low = 0
high = len(lst) - 1
while low <= high:
mid = (low + high)/2
if lst[mid] == x:
return mid
elif ist[mid] > 1:
high = mid -1
else:
low = mid + 1
return -1
ist = [5,8,10,13]
print bi_search(ist,5)
#显示list的下标
其时间复杂为:Olog2n
_____________最后的话,作为某三线互联网公司HR,此题目是我们考察候选人的第一道笔试题,但是在实际过程中,我们发现很多候选人的算法能力都非常薄弱,在这道题的解法上,只能用线性查找来实现该算法——
讨论此问题,有基本的两种解法,第一种是:线性查找,即直接比较数值是否在数列中,其算法如下:
#利用线性查找的方法查找List中的值
def search(ist,x):
for i in range(len(ist)):
if ist[1] == x:
return i
return -1
ist = [5,8,10,13]
print search(ist,5)
#显示List的下标
上面是第一种解法,不难看出其最坏的运行时间为:K0n+k1,所以算出其时间复杂度为On.
#利用两分查找法查找list中的值
def bi_search(lst, x):
low = 0
high = len(lst) - 1
while low <= high:
mid = (low + high)/2
if lst[mid] == x:
return mid
elif ist[mid] > 1:
high = mid -1
else:
low = mid + 1
return -1
ist = [5,8,10,13]
print bi_search(ist,5)
#显示list的下标
其时间复杂为:Olog2n
_____________最后的话,作为某三线互联网公司HR,此题目是我们考察候选人的第一道笔试题,但是在实际过程中,我们发现很多候选人的算法能力都非常薄弱,在这道题的解法上,只能用线性查找来实现该算法——
相关文章推荐
- C语言实现两个递减数列中寻找某一个数
- php实现斐波那契数列的简单写法
- Python打印斐波拉契数列实例
- SICP Exercise 1.13
- 反向操作
- 蓝桥杯:打印十字图
- 求斐波那契数列的第 n 项的值
- leetcode-3Sum Closest
- 1^b+2^b+3^b+...+n^b数列
- 数列与数列的极限
- 数列的相关公式
- 一个蛮有意思的数列
- python 实现斐波那契数列,动态删除历史数据demo,很久以前写的,分享给大家 推荐
- 两个关于数列的Python脚本(斐波那契数列和猴子吃香蕉类问题)
- Python算法题----玩转fibonacci数列
- 等差素数数列
- Python 几行实现斐波那契数列
- 斐波那契数列
- 等差素数数列
- 斐波那契数列