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

天真年代怀念

天真年代怀念

2016-02-19 10:52

下面请跟着图老师小编一起来了解下C 二分查找 递归与非递归的实现代码,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

代码如下:

#include stdio.h

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取接住返回值了

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

        } 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;
        }
    }

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

}

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;
        }
    }//上述循环结束后不一定就是 startends的  因为有break语句
    if(startends){
        mid=-1;
    }
    return mid;
}       

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
C 二分查找 递归与非递归的实现代码

java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码

编程语言 网络编程
java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java 折半查找法(二分查找)实例

编程语言 网络编程
java 折半查找法(二分查找)实例

无限级分类的非递归实现(存储过程版)

Web开发
无限级分类的非递归实现(存储过程版)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

递归的应用 -- 最简单分形图形实现

C语言教程 C语言函数
递归的应用 -- 最简单分形图形实现

用递归查找有序二维数组的方法详解

编程语言 网络编程
用递归查找有序二维数组的方法详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

js滚动条多种样式,推荐

js滚动条多种样式,推荐

自适应高度框架 ----属个人收藏内容

自适应高度框架 ----属个人收藏内容
下拉加载更多内容 ↓