zoukankan      html  css  js  c++  java
  • 二分查找法

    #include<stdio.h>
    
    int BinarySearch(const int a[],const int t,int lengh) ///暂时没错的版本,注意middle最好不要直接赋值,因为那样如果找不到,会引起死循环
    {
      printf("%d",sizeof(a));///放到这里输出为4
      int start = 0, end = lengh - 1;
      while(start <= end)
      {
        printf("start = %d and end = %d 
    ",start,end);
        int middle = start + (end - start)/2;
        if(a[middle] == t)
            return middle;
        else if(a[middle] < t)
            start = middle + 1;
        else
            end = middle - 1;
      }
      printf("The end");
    }
    
    int BinarySearchRecuision(const int a[], const int t, int start, int end)
    {
        if(start > end)
            return -1;
        int middle = (start + end)/2;
        if(a[middle] == t)
            return middle;
        else if (t > a[middle])
            return BinarySearchRecuision(a,t,middle+1,end);
        else
            return BinarySearchRecuision(a,t,start,middle-1);
    }///这估计就是传说中的分治法吧~
    
    void main()
    {
        int a[] = {1,2,3,5}; 
        int lengh = sizeof(a)/sizeof(a[0]);
        printf("%d",sizeof(a)); ///放到这里输出为16
        BinarySearch(a,5,lengh);
    }
    berkeleysong
  • 相关阅读:
    深入类的方法
    泛型集合
    深入C#数据类型
    深入.net框架
    错题
    详解Python Graphql
    深入理解分布式调度框架TBSchedule及源码分析
    30分钟闲置服务器建站(gitlab为例)
    Webpack开发指南
    mybatis-generator
  • 原文地址:https://www.cnblogs.com/berkeleysong/p/3733908.html
Copyright © 2011-2022 走看看