二分查找

em……………….

一下二分                                                                              然后又来  了。。。

题目描述
用分治算法实现二分查找:有10000个已经从小到大排序好的数据,输入一个数x,判断它是否在这10000个数中
输入
一个整数n,后面有n行,每行一个整数

最后一行为整数x

输出
找到输出"No.xxx"

否则输出"not find"

是的,水题可难了。

代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
    int a[100000];
    int n,t,num;
    void binary_search(int l,int r)
{
    int mid;
    mid=(l+r-1)/2;
    if(t==a[mid])
    { num=mid;
        cout<<"No."<<num<<endl;
        exit(0);
    }
    if(l==r)
        return;
    if(t<a[mid])
        binary_search(l,mid);
    else binary_search(mid+1,r);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    cin>>t;
    binary_search(1,n);
    if(num==0)
    cout<<"not find"<<endl;
    else cout<<"No."<<num<<endl;
    return 0;
    }









水啦

附赠

|大兔子病了,|  

\二兔子瞧,

/三兔子买药,

\四兔子熬,

/五兔子死了,

\六兔子抬,

|七兔子挖坑,|  

\八兔子埋,/  

\九兔子坐在地上哭起来,/  

\十兔子问它为什么哭?/  

\九兔子说:/  

 /“五兔子一去不回来。”\     

————————————————————————————————–

5 4  5 4  5 4  10 9 4 8