• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C 二分查找 递归与非递归的实现代码

C 二分查找 递归与非递归的实现代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了二分查找代码实现,二分查找代码,java二分法查找代码,二分法查找代码,数据结构二分查找代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

int binSearch(int arr[], int low, int high, int key);
int binSearch2(int arr[], int low, int high, int key);
int binSearch3(int arr[],int start,int ends,int key);
int main() {
    int arr[]={3,8,11,15,17,22,23,26,28,29,34};
    //printf("%d",binSearch(arr,0,10,26));
    printf("%d",binSearch3(arr,0,10,26));
    return 1;
}

int binSearch(int arr[], int low, int high, int key) {
    int flag=-1;
    int mid = (low + high) / 2;
    if (low > high) {
        flag= -1;
    } else {

        if (arr[mid] < key) {
            flag= binSearch(arr, mid + 1, high, key);
        } else if (arr[mid]>key) {
            //比如要找的节点在下面这一层   那么这一层会返回下标上来 用flag接住嘛...
            flag= binSearch(arr,low,mid-1,key);//又差一点忘记了用flag取接住返回值了

        } else {
            flag= mid;
        }
    }
    return flag;
}


//ok==============================
int binSearch2(int arr[], int low, int high, int key) {
    int mid = (low + high) / 2;
    if (low > high) {
        return -1;
    } else {

        if (arr[mid] < key) {
            return binSearch2(arr, mid + 1, high, key);
        } else if (arr[mid]>key) {
            return binSearch2(arr,low,mid-1,key);
        } else {
            return mid;
        }
    }

}

int binSearch3(int arr[],int start,int ends,int key){
    int mid=-1;
    while(start<=ends){
        mid=(start+ends)/2;
        if(arr[mid]<key){
            start=mid+1;
        }else if(arr[mid]>key){
            ends=mid-1;
        }else{
            break;
        }
    }//上述循环结束后不一定就是 start>ends的  因为有break语句
    if(start>ends){
        mid=-1;
    }
    return mid;
}       
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C 二分查找 递归与非递归的实现代码

相关文章

  • 2017-05-28使用C语言操作文件的基本函数整理
  • 2017-05-28C语言内存对齐实例详解
  • 2017-05-28C++之Boost::array用法简介
  • 2017-05-28C语言实现大数据文件的内存映射机制
  • 2017-05-28C语言中isalnum()函数和isalpha()函数的对比使用
  • 2017-05-28C++详解默认参数的构造函数及简单实例代码
  • 2017-05-28.h和.cpp文件的区别(zt)详细介绍
  • 2017-05-28c++中八大排序算法
  • 2022-04-30C语言指针是什么?1分钟彻底理解C语言指针的概念
  • 2017-05-28简单介绍C语言中的umask()函数和truncate()函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 解析C++中的字符串处理函数和指针
    • 浅析结束程序函数exit, _exit,atexit的区别
    • C++ 如何用cout输出hex,oct,dec的解决方法
    • C++实现修改函数代码HOOK的封装方法
    • 基于list循环删除元素,迭代器失效的问题详解
    • Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程
    • 解析C语言中结构体struct的对齐问题
    • C/C++位操作实例总结
    • strcat 函数的使用指南
    • 基于C++中覆盖,重载,隐藏的一点重要说明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有