题目:
输入指定列表和一个待查找的元素,输出元素是否在列表中,若存在则返回下标
思想:
利用二分查找来做,事先需要对列表进行排序,二分查找只对有序表有效
下面是具体的实现:
-
#!usr/bin/env python
-
#encoding:utf-8
-
-
”’
-
-
功能:二分查找
-
”’
-
-
-
def binary_search(num_list, x):
-
”’
-
二分查找
-
”’
-
num_list=sorted(num_list)
-
left, right =
0, len(num_list)
-
while left < right:
-
mid =int(left + right) /
2
-
if num_list[mid] > x:
-
right = mid
-
elif num_list[mid] < x:
-
left = mid +
1
-
else:
-
return
‘待查元素{0}在列表中下标为:{1}’.format(x, mid)
-
return
‘待查找元素%s不存在指定列表中’%x
-
-
-
-
if __name__ ==
‘__main__’:
-
num_list = [
34,
6,
78,
9,
23,
56,
177,
33,
2,
6,
30,
99,
83,
21,
17]
-
print binary_search(num_list,
34)
-
print binary_search(num_list,
177)
-
print binary_search(num_list,
21)
-
print binary_search(num_list,
211)
-
print binary_search(num_list,
985)
结果如下:
待查元素34在列表中下标为:9 待查元素177在列表中下标为:14 待查元素21在列表中下标为:5 待查找元素211不存在指定列表中 待查找元素985不存在指定列表中
转载:https://blog.youkuaiyun.com/together_cz/article/details/76212242