二分、三分算法笔记

本文详细介绍了二分查找算法的原理、举例、代码模型及其不足,并提供了改进方案。此外,还讨论了三分搜索在处理单峰函数时的优势,通过举例说明了如何在给定的单调不减序列中应用三分搜索找到特定数值的首次出现位置。
摘要由CSDN通过智能技术生成

目录

什么是二分

举例

代码模型

不足

改进代码

例题

题目描述

输入格式

输出格式

AC代码:

三分搜索


什么是二分

假设一维数组 data 已经按升序排列,二分查找算法根据当前需要查找的区间[left,right]定义一个中间位置 middle=(left+right)/2,将待查找值 x 与数组元素 data[middle]进行比较,有三种情况:
(1)x=data[middle],则找到了该元素;
(2)x>data[middle],由于数组是按升序排列的,待寻找的值要么不在数组中,要么只可能在右半区间[middle+1,right];
(3)x<data[middle],待寻找的值要么不在数组中,要么只可能在左半区间[left,middle-1]。由于每次查找都是在原区间的一半内进行,又称为折半查找,总的时间复杂度为 Ο(logn)。

举例

以一个具体的例子来说明二分查找的工作过程。设 data[10]={1,2,3,4,5,6,7,8,9,10},待查找的值 x=7,初始时,需要查找的区间为[left=0,right=9],中间位置 middle=(left+right)/2=(0+9)/2=4,由于 data[4]=5<x=7,则应该在右半区间[left=middle+1=5,right=9]中继续查找,此时 middle=(5+9)/2=7,而 data[7]=8>x=7,应该继续在左半区间[left=5,right=middle-1=6]中查找,之后 middle=(5+6)/2=5࿰

评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gyk1303

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值