美文网首页
python二分查找

python二分查找

作者: 側耳听偑 | 来源:发表于2020-11-26 22:28 被阅读0次

python二分查找

# 查找数据

import random

# nums = [random.randint(1,101) for x in range(10)]
nums = [27, 19, 74, 67, 25, 89, 34, 3, 93, 95]
print(nums)

print(nums.index(3))


# print(nums.index(5))
# 问题1 当查找 不存在的数据会报错

# 解决问题:
def find_element(nums, ele):
    for item in enumerate(nums):
        if ele == item[1]:
            return item[0]
    else:
        return -1


# 测试
print(find_element(nums, 35))
print(find_element(nums, 5))


# 问题2 查找效率太低
# 如果将数据放大100倍,在1000个数据中查找数据,那么平均每个数据的查找比较次数是 500次
# 二分查找法

def binary_search(nums, ele):
    # 如果不在列表中不需要查找
    if ele not in nums:
        return -1
    # 左边界
    start = 0
    # 右边界
    stop = len(nums) - 1
    # 左边大于右边才可以查找
    while start <= stop:
        # 确定中值
        mid = (start + stop) // 2
        # 判断,改变左
        if ele > nums[mid]:
            start = mid + 1
        # 判断改变右
        elif ele < nums[mid]:
            stop = mid - 1
        # 找到
        else:
            return mid


# 二分查找必须基于有须数据,所以对数据进行排序
nums.sort()

print(binary_search(nums, 3))
print(binary_search(nums, 95))
print(binary_search(nums, 5))
二分查找示意图.jpg

相关文章

  • 双指针(链表、数组)

    二分查找用于有序的排列python中的二分查找模块bisect,Python中的list.inidex时间复杂度是...

  • 算法之二分查找

    二分查找 二分查找是著名、高效并有应用广泛的查找算法。 二分常规实现 1.循环实现 下面我用python语言实现循...

  • python二分查找

    python二分查找 # 查找数据import random# nums = [random.randint(1,...

  • Python实现二分法

    Python实现二分查找 为什么需要二分查找 如果查找1-100内任意一个数字?顺序查找(简单查找)从1开始或者1...

  • 基础算法笔记 python和C++

    二分查找 python code 选择排序 python code c++ code 快速排序 python c++

  • 算法之二分查找

    排序算法 二分查找 用于有序元素列表的查找性能: Python实现: C#实现

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • python顺序查找&二分查找

    搜索列表中某个元素是否存在通常有两种方法,顺序查找和二分查找。顺序查找用于被查询列表是无序列表的情况;二分查找用于...

  • Python二分查找

    二分查找 每次能够排除掉一半的数据,查找的效率非常高,但是局限性比较大。 必须是有序序列才可以使用二分查找。 1....

网友评论

      本文标题:python二分查找

      本文链接:https://www.haomeiwen.com/subject/mdftwktx.html