您的位置:首页 > 其它

判断数值是否在数列中的方法

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,此题目是我们考察候选人的第一道笔试题,但是在实际过程中,我们发现很多候选人的算法能力都非常薄弱,在这道题的解法上,只能用线性查找来实现该算法——

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数列