美文网首页
1.图解算法(二分查找)

1.图解算法(二分查找)

作者: WandaGao | 来源:发表于2022-03-03 12:25 被阅读0次

1.二分查找:适用于查找有序元素列表中的指定元素

特点:列表必须有序 对半拆分

问题:游戏 1-100中,小明设置一个数字,小红猜测,数字=小明设置正确,数字<小明设置 小明说小了 ,数字>小明设置 小明说大了,最多多少次小红能猜中数字?

使用折半法查找
第一步 100/2 =50 猜50

                        第二步   50/2    猜25

                        第三步   25/2    猜13

                        第四步    13/2  猜7

                         第五步    7/2    猜4

                         第6步     4/2     猜2

                         第7步    2/2     猜1

所以最多7步之内,肯定能得到答案

对于任意n个元素的有序序列,查找的步骤最多是 \log_2{n}=k

k即为最大次数

log是什么? log是对数表达式,那对数是什么? 对数运算是幂运算的逆运算

首先幂运算 比如 10*10=100 即 10^2= 100

反过来10^x=100 求x的值即为对数运算, 数学表达式为是\log_{10}{100} =x

以下为二分查找python版代码表达式


# 循环
def brinary_search_(array, find):
    low = 0
    height = len(array) - 1
    while low <= height:
        mid = int((height + low) / 2)
        if array[mid] == find:  # 比较完中间值 后面无需再比较所以 mid的位置根据情况+1 or -1
            return mid
        if array[mid] > find:
            height = mid - 1
        else:
            low = mid + 1
    return -1


# 递归
def brinary_search(array, find, low, height):
    mid = int((height + low) / 2)
    if find > array[height] or find < array[low]:
        return -1
    if array[mid] == find:
        return mid
    if low > height:
        return -1
    if array[mid] > find:
        return brinary_search(array, find, low, mid - 1)
    if array[mid] < find:
        return brinary_search(array, find, mid + 1, height)


if __name__ == '__main__':
    myArray = [1, 3, 5, 7, 8, 10, 12]
    index = brinary_search_(myArray, 6)
    index_ = brinary_search(myArray, 8, 0, len(myArray) - 1)
    print(index)
    print(index_)

相关文章

  • 1.图解算法(二分查找)

    1.二分查找:适用于查找有序元素列表中的指定元素 特点:列表必须有序 对半拆分 问题:游戏 1-100中,小明...

  • python 算法开发笔记

    前言 最近看完《算法图解》对python的算法有点了解,特记录下来 算法概括 二分查找的速度比简单查找快得多 算法...

  • 数据结构与算法

    参考文档《算法图解》《计算机算法设计与分析》 简单查找 时间复杂度 空间复杂度 java Demo 二分查找 时间...

  • 《算法图解》之二分查找与快速排序

    说明:以下内容均参考:[美]Aditya Bhargava所著的《算法图解》 第一种使用的算法:二分查找。 二分查...

  • 刷题笔记

    算法思想 一、二分查找 1. 算法思想 算法详解 算法细节 一定要看二分查找细节.md 实现时需要注意以下细节: ...

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

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

  • 数据结构与算法系列——二分查找

    二分查找算法的简单介绍 今天我们来学习一下二分查找算法,也叫做折半查找算法。使用二分查找算法的前提是数据需要是有序...

  • 《算法图解》读书笔记

    《算法图解》读书笔记 二分查找 算法实现: ​ 在有序列表中查找一个数,每次都与有序列表的中间数比较,如果不同...

  • 算法笔记(5)| 二分

    1.二分查找 二分查找是基于有序序列的查找算法,该算法一开始令[left,right]为整个序列的下标区间,然后每...

  • 算法图解一(二分查找)

    今天主要跟大家分享二分查找算法。 有兴趣的朋友的可以去阅读《算法图解》这本书。 首先说下什么是算法。 算法定义: ...

网友评论

      本文标题:1.图解算法(二分查找)

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