zoukankan      html  css  js  c++  java
  • 用递归的方法实现折半查找

    #include<stdio.h>
    int BinarySearch(int *a,int x,int left,int right);
    int main(void)
    {

    //注:数组必须是有序的

    //int a[]={1,2,3,4,5,6,7,8,9,10,12,14,15,18,20};
    int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int num,result;
    printf("输入要查找的数:");
    scanf("%d",&num);
    result = BinarySearch(a,num,0,14);
    if(result<0)
    printf("你要查找的数据不存在! ");
    else
    printf("数组里下标为%d的元素值等于%d ",result,num);
    return 0;
    }
    //自定义一个函数
    //数组指针,要查找的数,首元素,末元素
    int BinarySearch(int *a,int x,int left,int right)
    {
    int middle;
    if(left<=right)
    {

    //在这初始化middle的值是为了防止溢出
    middle = (left+right)/2;
    if(a[middle]==x)
    return middle;
    else if(a[middle]<x)
    left = middle +1;
    else if(a[middle]>x)
    right = middle -1;
    //注意return递归必须是执行的
    return BinarySearch(a,x,left,right);
    }
    return -1;
    }

  • 相关阅读:
    Windows 10 PC 安装 Docker CE
    macOS 安装 Docker
    CentOS 安装 Docker CE
    Debian安装Docker
    ubuntu安装Docker
    docker基本概念
    linux docket
    Express框架
    Koa1 框架
    2018年03月刷题学习日记
  • 原文地址:https://www.cnblogs.com/caocx/p/5992847.html
Copyright © 2011-2022 走看看