二分查找

題目:

輸入指定列表和一個待查找的元素,輸出元素是否在列表中,若存在則返回下標

思想:

利用二分查找來做,事先需要對列表進行排序,二分查找只對有序表有效

下面是具體的實現:


  1. #!usr/bin/env python
  2. #encoding:utf-8
  3. ”’
  4. 功能:二分查找
  5. ”’
  6. def binary_search(num_list, x):
  7. ”’
  8. 二分查找
  9. ”’
  10. num_list=sorted(num_list)
  11. left, right = 0, len(num_list)
  12. while left < right:
  13. mid =int(left + right) / 2
  14. if num_list[mid] > x:
  15. right = mid
  16. elif num_list[mid] < x:
  17. left = mid + 1
  18. else:
  19. return ‘待查元素{0}在列表中下標爲:{1}’.format(x, mid)
  20. return ‘待查找元素%s不存在指定列表中’%x
  21. if __name__ == ‘__main__’:
  22. num_list = [34,6,78,9,23,56,177,33,2,6,30,99,83,21,17]
  23. print binary_search(num_list, 34)
  24. print binary_search(num_list, 177)
  25. print binary_search(num_list, 21)
  26. print binary_search(num_list, 211)
  27. print binary_search(num_list, 985)


結果如下:


  1. 待查元素34在列表中下標爲:9
  2. 待查元素177在列表中下標爲:14
  3. 待查元素21在列表中下標爲:5
  4. 待查找元素211不存在指定列表中
  5. 待查找元素985不存在指定列表中


轉載:https://blog.csdn.net/together_cz/article/details/76212242

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章