python二分查找

骑猪看日落 2022-12-24 05:50 220阅读 0赞

python二分查找

  1. # 查找数据
  2. import random
  3. # nums = [random.randint(1,101) for x in range(10)]
  4. nums = [27, 19, 74, 67, 25, 89, 34, 3, 93, 95]
  5. print(nums)
  6. print(nums.index(3))
  7. # print(nums.index(5))
  8. # 问题1 当查找 不存在的数据会报错
  9. # 解决问题:
  10. def find_element(nums, ele):
  11. for item in enumerate(nums):
  12. if ele == item[1]:
  13. return item[0]
  14. else:
  15. return -1
  16. # 测试
  17. print(find_element(nums, 35))
  18. print(find_element(nums, 5))
  19. # 问题2 查找效率太低
  20. # 如果将数据放大100倍,在1000个数据中查找数据,那么平均每个数据的查找比较次数是 500次
  21. # 二分查找法
  22. def binary_search(nums, ele):
  23. # 如果不在列表中不需要查找
  24. if ele not in nums:
  25. return -1
  26. # 左边界
  27. start = 0
  28. # 右边界
  29. stop = len(nums) - 1
  30. # 左边大于右边才可以查找
  31. while start <= stop:
  32. # 确定中值
  33. mid = (start + stop) // 2
  34. # 判断,改变左
  35. if ele > nums[mid]:
  36. start = mid + 1
  37. # 判断改变右
  38. elif ele < nums[mid]:
  39. stop = mid - 1
  40. # 找到
  41. else:
  42. return mid
  43. # 二分查找必须基于有须数据,所以对数据进行排序
  44. nums.sort()
  45. print(binary_search(nums, 3))
  46. print(binary_search(nums, 95))
  47. print(binary_search(nums, 5))

二分查找示意图.jpg

发表评论

表情:
评论列表 (有 0 条评论,220人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python二分查找

    一、二分查找原理 二分查找是一种在有序列表中查找某一特定元素的搜索算法。搜索过程从列表的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素...

    相关 Python二分查找

    > 二分查找又称折半查找,首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中

    相关 查找——二分查找

    基本思想 二分查找是建立在有序顺序表基础上的!步骤如下: 1.      将表中间位置记录的关键字与给定K值进行比较,若两者相等,则查找成功。 2.