題目:
輸入指定列表和一個待查找的元素,輸出元素是否在列表中,若存在則返回下標
思想:
利用二分查找來做,事先需要對列表進行排序,二分查找只對有序表有效
下面是具體的實現:
- #!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.csdn.net/together_cz/article/details/76212242