zoukankan      html  css  js  c++  java
  • 寻找脚码2013年2月24日

          题目来自:《C语言精选名题百则技巧篇》

         问题描述:已知一个整数数组x[],其中的元素彼此都不相同,而且也已经从小到大排列好。请用比较大小,相等的方式编写一个程序,找出给定的数组中是否有一个元素满足x[i]==i(注意:在代码中是从0开始索引的,也就是x[0]是第一个数,所以对应于代码也就是x[i]==i+1)的关系。举例而言,如果x[]={-2,-1,3,7,8},x[3]=3,因此3就是答案。

         思路:利用x[]中的元素彼此都不相同而且从小到大排列,可以用二分查找法。代码很简单。

     1 #include <stdio.h>
     2 #define MAX 1000
     3 
     4 //prototypes
     5 int BinarySearch(int a[],int high,int low);
     6 
     7 int main()
     8 {
     9     int x[MAX]={-2,2,4,7,8};//x[i]=i+1;
    10     int low=0;
    11     int high=4;
    12     int result=BinarySearch(x,high,low);
    13     printf("%d\n",x[result]);
    14 }
    15 
    16 int BinarySearch(int a[],int high,int low)
    17 {
    18     while(low<=high)
    19     {
    20         int mid=low+(high-low)/2;
    21         if(a[mid]==mid+1)
    22             return mid;
    23         else if(a[mid]>mid+1)
    24             high=mid-1;
    25         else 
    26             low=mid+1;
    27     }
    28     return -1;
    29 }

           如果你觉得我的文章对你有帮助,请推荐一下,非常感谢!

  • 相关阅读:
    静态方法
    表单的验证
    jquery笔记
    jquery参考
    dom体系 和获取其他页面的Window对象
    jsRegExp对象
    jsDate对象
    js案例
    Sqli-Labs 闯关 less 42-53
    Sqli-Labs 闯关 less 32-41
  • 原文地址:https://www.cnblogs.com/NeilHappy/p/2924160.html
Copyright © 2011-2022 走看看