• C++实现递归版二分搜索算法


    无聊撸了一个,没啥技术含量,别吐槽。。

    #include <iostream>
    using namespace std;
    int BinarySearch(int* nums,int key,int len);
    int search(int* nums,int key,int L,int R);
    
    int main()
    {
        int *nums;
        int length;
        int keyNum;
        cout<<"请输入你希望的数字个数:"<<endl;
        cin>>length;
        nums = new int[length];
        cout<<"请输入"<<length<<"个数:"<<endl;
        for(int i=0;i<length;i++)
            scanf("%d",&nums[i]);
        cout<<"输入你想找的数字::"<<endl;
        while(cin>>keyNum){
            int result = BinarySearch(nums,keyNum,length);
            if(!(result==-1))
                cout<<"Position in array is: "<<result<<"
    "<<endl;
            else
                cout<<"Failed!"<<endl;
            delete[] nums;
            cout<<"请输入你希望的数字个数:"<<endl;
            cin>>length;
            nums = new int[length];
            cout<<"请输入"<<length<<"个数:"<<endl;
            for(int i=0;i<length;i++)
                scanf("%d",&nums[i]);
            cout<<"输入你想找的数字::"<<endl;
        }
        return 0;
    }
    
    int BinarySearch(int* nums,int key,int len){ //仅作为用户入口
        return search(nums,key,0,len);
    }
    
    int search(int* nums,int key,int L,int R){
        int mid = (L+R)/2;
        if(nums[mid]==key) return mid;   //递归基
        if(nums[mid]>key)
            return search(nums,key,L,mid-1);
        else if(nums[mid]<key)
            return search(nums,key,mid+1,R);
        return -1;   //如果失败了返回-1
    }
    

    OVER

  • 相关阅读:
    淘淘商城项目分析报告
    LDAP入门
    spring APO的简单理解
    MySQL数据库的导入导出
    servlet CDI
    Result 架构
    java的设计模型
    JavaEE人力资源管理系统测试报告——许珍源、朱国辉小组
    部分代码片段——人力资源管理系统
    期末项目——人力资源管理系统需求分析
  • 原文地址:https://www.cnblogs.com/1Kasshole/p/9107732.html
Copyright © 2020-2023  润新知