zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    (转)python3 计算字符串、文件md5值
    CF1398D Colored Rectangles(DP)
    Colab运行GitHub代码
    Pytorch错误解决
    SAP内部订单
    料工费
    摘抄,泛起内心的一丝波澜
    审计意见类型
    生产订单设置自动倒冲
    SAP常用事务码及规则tcode
  • 原文地址:https://www.cnblogs.com/cart55free99/p/2980390.html
Copyright © 2011-2022 走看看