问题
查找某个值在list中的位置
解决思路
能够用折半查询的方法解决此问题。
解决(Python)
#! /usr/bin/env python
#coding:utf-8
#折半查找某个元素在list中的位置
def half_search(lst,value,left,right):
length = len(lst)
while left<right:
middle = (right-left)/2
if lst[middle]>value:
right = middle-1
elif lst[middle]<value:
left = middle+1
else:
return middle
if __name__=="__main__":
lst=sorted([2,4,5,9]) #折半算法中list要进行排序
length = len(lst)
left = 0
right = length-1
value =4
result = half_search(lst,value,left,right)
if result:
print result
else:
print "There is no the value that you want to search."
再思考
对于上面的折半方法,在python中,能够通过一个函数实现
lst = sorted([2,4,5,9]) #这里进行排序。主要是为了得到与上面方法一样的结果。其实,list.index()能够针对不论什么list操作,不一定非要排序
result = lst.index(4)
此外。假设遇到list中有多个同样的元素。应该怎样将这些元素的位置都查询出来呢?以下的方法是用python实现。
def find_value_location(lst,value):
result = [i for i in range(len(lst)) if value==lst[i]]
return result
很多其它用python实现的算法,请看:https://github.com/qiwsir/algorithm
qiwsir#gmail.com