zoukankan      html  css  js  c++  java
  • swust oj 1010

    折半查找的实现

    1000(ms)
    10000(kb)
    2877 / 11213
    编写程序实现折半查找算法。

    输入

    第一行是查找表的长度n
    第二行是查找表中的数据元素 ;
    第三行是要查找的数据元素的关键字.

    输出

    查找成功返回位序,不成功返回-1 ,第二行为比较的次数。

    样例输入

    11
    5 13 19 21 37 56 64 75 80 88 92
    100

    样例输出

    -1
    4
     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstdlib>
     5 #include<cstring>
     6 #include<cmath>
     7 using namespace std;
     8 int x;
     9 int findx=-1;
    10 
    11 int find(int arr[],int l,int r)
    12 {
    13     static int k=0;
    14     if(l>r)
    15         return 0;
    16     int s=(l+r)>>1;
    17     if(arr[s]>x)
    18         find(arr,l,s-1);
    19     else if(arr[s]<x)
    20         find(arr,s+1,r);
    21     else
    22         findx=s;
    23     k++;
    24     return k;
    25 }
    26 
    27 int main()
    28 {
    29     int n;
    30     cin>>n;
    31     int *p=new int[n];
    32     for(int i=0;i<n;i++)
    33         cin>>*(p+i);
    34     cin>>x;
    35     int y=find(p,0,n-1);
    36     cout<<findx<<endl;
    37     cout<<y;
    38     delete(p);
    39     return 0;
    40 }
  • 相关阅读:
    结构型模式:装饰者
    SQL Server Collatation
    实践SQLServer Tuning
    导出jar包时需指定mainclass
    垃圾回收
    web.config的部署
    控制反转与依赖注入
    Design Patterns Refcard
    实践理解计算机启动过程
    备忘录(memento)
  • 原文地址:https://www.cnblogs.com/Iwpml-595/p/10713004.html
Copyright © 2011-2022 走看看