首页 > 其他分享 >数据结构:二分查找法

数据结构:二分查找法

时间:2023-10-21 16:01:32浏览次数:30  
标签:二分 include cout int mid high 查找 low 数据结构

#include <iostream>
#include<string>
#include<ctime>

#include<cstdlib>
#include<algorithm>
using namespace std;
//非递归版本的二分查找法
int BinarySearch1(int a[],int n,int key){
    int low=0;
    int high=n-1;
    int mid;
    if(key<a[0]||key>a[n-1])
        return -1;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(key==a[mid]){
            cout<<"查找成功,mid="<<mid<<endl;
            return mid;
        }
        if(key<a[mid])
            high=mid-1;
        else  //key>a[mid]  应该到mid+1 ......high区间去找
            low=mid+1;
    }
    if(low>high){
        cout<<"查找失败"<<endl;
        return -1;
    }
}

int main(){
    int *a;
    int i=0;
    int n,m;
    int key;
    a=new int[n];
    cout<<"请输入n:"<<endl;
    cin>>n;
    srand((unsigned)time(NULL));
    for(i=0;i<n;i++){
        m=rand()%100+1;
        a[i]=m;
    }
    sort(a,a+n);
    cout<<"长度是"<<n<<"的有序数据列表:"<<endl;
    for(i=0;i<n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    cout<<"输入你要找的key:"<<endl;
    cin>>key;
    cout<<BinarySearch1(a,n,key);
    }

标签:二分,include,cout,int,mid,high,查找,low,数据结构
From: https://blog.51cto.com/u_16202211/7967887

相关文章

  • go mod tidy总是安装最新依赖,如何查找哪个模块导致某个包安装最新依赖,提供一个小工具
    安装:goinstallgithub.com/jan-bar/interesting/findModVer@latest执行:findModVerd:\myproject结果如下图所示:根据结果可以找到哪个依赖导致google.golang.org/grpcv1.45.0使用了这个版本,这样每次执行gomodtidy会自动修改该模块到v1.45.0版本。我看了下github.com/spf1......
  • Java List数据结构底层实现与常用实现类解析
    一、JavaList数据结构的底层实现原理List是Java中最常用的数据结构之一,它可以按照元素的插入顺序有序存储一组对象。在Java中,List接口有多种不同的实现方式,每种方式都有自己的底层实现机制。1.1数组实现ArrayList是List接口最常用的实现类之一,它使用数组作为底层数据结构。ArrayL......
  • 8皇后问题用基本数据结构实现(不用stl)
    1#include<iostream>2usingnamespacestd;34#defineSTACKSIZE25656intResult;//记录结果78typedefstruct9{10introw;11intcol;12}QueenPlace;1314typedefstruct15{16QueenPlace*pBase;17......
  • 查找算法
    顺序查找(线性查找)思想:根据列表下标的顺序,一步步查找列表中的元素是否有与需查找元素相对应,有则返回下标。代码实现#顺序查找deflinear_search(li,e):forind,valinenumerate(li):ifval==e:returnindelse:returnNoneli=......
  • 数据结构-链表
    //节点classNode{constructor(element){this.element=elementthis.next=null}}//链表classLinkList{constructor(){this.size=0this.head=null}//根据index获取节点getNode(index){if(index<0||index>......
  • 数据结构之美:如何优化搜索和排序算法
    文章目录搜索算法的优化1.二分搜索2.哈希表排序算法的优化1.快速排序2.归并排序总结......
  • 数据结构:实验一+实验二
    数据结构:实验一数据结构:实验二......
  • 神经网络基础篇:详解二分类(Binary Classification)
    二分类注:当实现一个神经网络的时候,通常不直接使用for循环来遍历整个训练集(编程tips)举例逻辑回归逻辑回归是一个用于二分类(binaryclassification)的算法。首先从一个问题开始说起,这里有一个二分类问题的例子,假如有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签......
  • 数据结构与算法 | 链表(Linked List)
    链表(LinkedList)链表(LinkedList)是一种线性数据结构,它由一系列节点(Node)组成,每个节点包含两部分:数据和指向下(上)一个节点的引用(或指针)。链表中的节点按照线性顺序连接在一起(相邻节点不需要存储在连续内存位置),不像数组一样存储在连续的内存位置。链表通常由头节点(Head)来表示整个链......
  • 《数据结构》王卓老师 p48-p62学习反馈
    跟着青岛大学-王卓老师的视频进行到链队列时,运行链队列代码的时候遇到了两个问题:1.)ProgramreceivedsignalSIGSEGVSegmentationfault附代码: #include<stdio.h> #include<stdlib.h> typedefchar ElemType; typedefstructqnode{ ElemTypedata; structq......