c++算法之二分查找

0)为什么感觉站点都没有人

1)什么是二分查找

二分查找,又称折半查找,即把数列分成两部分进行查找。

比如要在1,2,3,4,5,6,7,8,9,10中查找6,分成以下步骤:

1 查找中点5,由于5<6,则范围一定在6 7 8 9 10

2 查找中点为8,由于8>6,则范围在6,7之间。

3 中点为6,由于6就是要搜索的数,输出结果。

有两种方法,递归和非递归。

代码如下(为防止抄袭,发截图)

上为递归,下为非递归,两者都是在1,2,3,4,5,6,7,8,9,10中搜索5,并输出5的位置。

显然需要先排序。

其中mid=l+r>>1其实就是mid=(l+r)/2;

x>>1 <–> x/2

版权声明:本文为博主Alex172原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://nth.ink/cpp/P2502.html

(广告由我们的赞助商提供,内容与本站无关)

评论

  1. 23786 NSObject
    23786 NSObject 博主
    Macintosh Chrome 84.0.4147.105
    9月前
    2020-8-04 15:01:44

    不是说二分查找有三种模式吗
    分(l+r+1)/2和(l+r)/2
    和while(l<r) while(l<=r) while(l+1<r)
    r=mid r=mid + 1
    l=mid l=mid-1
    分好几种的啊
    (我们老师说的

    • ZiXiang Wei
      ZiXiang Wei
      Windows Firefox 80.0
      9月前
      2020-8-04 15:25:28

      (l+r+1)/2是为了防止死循环

  2. Yihao Qin
    Yihao Qin 博主
    Windows Edge 86.0.587.0
    9月前
    2020-8-04 15:12:26

    审核通过

  3. Code Rolling
    Code Rolling
    Windows Chrome 84.0.4147.105
    9月前
    2020-8-05 9:47:47

    代码看不清/xyx

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇