• 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取接住返回值了
    
            } 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;
    }
  • 相关阅读:
    机器学习十四--深度学习-卷积
    机器学习十三——垃圾邮件分类2
    机器学习十二----朴素贝叶斯-垃圾邮件分类
    机器学习十一 ——分类与监督学习,朴素贝叶斯分类算法
    机器学习九----主成分分析
    机器学习八——特征选择
    基于D3.js 绘制一个折柱混合图
    一个轮播图
    贪吃蛇
    数组中哪些方法是响应式的
  • 原文地址:https://www.cnblogs.com/cart55free99/p/2980390.html
Copyright © 2020-2023  润新知