Python 二分查找程序

前言

本文为实验性文章。

我尝试了一种 magical~的方法:自己写一段代码,丢给chatgpt让它详细地解释,并写一篇博客文章(节省约2h的编辑时间)

  • -这里有一个python的二分查找程序,请你详细地解释一下,写一篇博客文章,并且为完整程序添加中文注释,用markdown语言,我要发表到wordpress博客网站

当然,还可以让它把每个细节都解释一下(懒),(其实让它自己写一篇文章发表也行)

所以,以后会有很多chatgpt协助的文章发表在博客。(放心啦,我不会让chatgpt写超过1/4的内容啦,不然就没意思了😶‍🌫️)


简介

二分查找也称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。其基本思想是:每次取有序数组的中间位置的值与目标值进行比较,如果中间位置的值比目标值大,则在数组左半部分继续查找,否则在数组右半部分继续查找,直到找到目标值或者数组被查完为止。

以下是一个使用 Python 实现的二分查找程序,并且添加了中文注释。(代码by小Jack,chatgpt添加注释)


lst = [23, 69, 120, 188, 277, 369, 404, 567, 624, 879]  # 定义有序数组
target = 404  # 目标元素
begin = 0  # 数组起始索引
end = len(lst) - 1  # 数组结束索引
def search(begin, end):  # 定义二分查找函数,需要输入数组的起始和结束索引
    mid = (begin + end) // 2  # 计算中间值,注意要使用整除符号“//”(向下取整),不然会出错
    num = lst[mid]  # 获取中间元素的值
    if num < target:  # 如果中间元素比目标元素小,则在右半部分继续查找
        search(mid + 1, end)
    elif num > target:  # 如果中间元素比目标元素大,则在左半部分继续查找
        search(begin, mid - 1)
    elif num == target:  # 如果中间元素等于目标元素,则输出其索引,并返回函数
        print("目标的索引:" + str(mid))
        return
search(begin, end)

运行

为了运行这个程序,我们只需要调用 search 函数,并传入数组的起始和结束索引即可。程序会自动计算出中间值,然后根据目标值与中间值的大小关系来缩小查找范围,直到找到目标元素或者数组被查完。


search(begin, end)   
# 调用二分查找函数

如果运行成功,则会输出以下信息:

目标的索引:6

这表示程序成功地在有序数组 lst 中找到了目标元素 404 并输出了其索引 6

结论

二分查找是一种非常高效的查找算法,可以在极短的时间内查找到目标元素。但是该算法的前提条件是数组必须是有序的,如果数组无序,则需要先对数组进行排序操作。

评论

  1. Windows Edge
    2 年前
    2023-4-16 11:23:35

    还有,代码高亮有点小毛病

  2. Windows Edge
    2 年前
    2023-4-16 11:22:57

    万能的递归

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯
 ̄﹃ ̄
(/ω\)
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
(´っω・`。)
( ,,´・ω・)ノ)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•)
(ㆆᴗㆆ)
有希酱最可爱啦!(素材来自bilibili@最上川下山)
整活by Mimosa233
Source: github.com/k4yt3x/flowerhd
galgame系列表情by Mimosa233
颜文字
周防有希
小恐龙
夸夸我!
花!
可愛い!
上一篇
下一篇