首页 > 其他分享 >折半查找

折半查找

时间:2023-04-18 20:46:59浏览次数:27  
标签:折半 cout int mid high 查找 low

N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置。若找到,则输出其下标值;反之,则输出“Not be found!”。

由于我们将数存入数组当中,我们可以先设置最大值下标和最小值下标,通过下标表示数值,现将要找的数与最中间的数进行比较,若要找的数大,则在最中间的数和最大值的数之间进行寻找,反之则在最小值的数和最中间的数之间进行寻找,以此一直找下去找到要找的数为止,如果不存在输入的要找的数,则直接输出“Not be found!”。

 

 

#include<iostream>
using namespace std;
#define N 7
int main()
{
int x,low=0,high=N-1,mid,y=-1;
int a[N]={6,10,27,35,49,50,80};
cout<<"a数组的数据为:"<<endl;
for(int i=0;i<N;i++)
{
cout<<a[i]<<"\t" ;
}
cout<<endl;
cout<<"要查找的值为:";
cin>> x;
while(low<=high)
{
mid=(low+high)/2;
if(x<a[mid])
{
high=mid-1;
}
else if(x>a[mid])
{
low=mid+1;
}
else
{
y=mid;
break;
}
}
if(y>=0)
{
cout<<"找到了下标值为"<<y<<endl;
}else
{
cout<<"Not be found!"<<endl;
}
return 0;
}

运行结果如下:

 

标签:折半,cout,int,mid,high,查找,low
From: https://www.cnblogs.com/618zyk/p/17330834.html

相关文章

  • 折半查找
    1.问题描述:用二分法查找一段有序数组中的某个整数,输出其下标,如果没找的这输出“Notbefound”2.问题分析:分析问题知这个问题分为三部分:(1)输入N个整数(2)将这N个整数进行排序(3)使用二分法进行查找;3.算法设计:先输入一个整数N,用vector函数来储存这N个整数,用algorithm函数库中的sort()函......
  • day 9 二分查找
     1.输入一组有序数列;2.每次查找序列的中间位置并与目标数比较;3.依据比较缩小数列,直到找到目标数或数列长度为1;4.输出; #include<iostream>usingnamespacestd;intn,t,flag;inta[100];intf(intl,intr){while(l<r){intmid=l+r>>1;if(a[......
  • STATA 遍历查找
    sscinstallelabel,replacesysuseauto,clearused:\statashu\2\cgss2015,clearforeachvofvarlist_all{cap:sdecode`v',replace}usecgss2015-2,replacelocalk=_Nforeachvarofvarlist_all{locala:varlabel`var'//disp&qu......
  • 二分查找
    给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:输入:nums=[-1,0,3,5,9,1......
  • 【LBLD】常数时间删除-查找数组中的任意元素
    常数时间删除-查找数组中的任意元素380.O(1)时间插入、删除和获取随机元素classRandomizedSet{private:vector<int>nums;unordered_map<int,int>num2index;public:RandomizedSet(){srand(time(0));}boolinsert(intval){......
  • 查找自己农历生日与公历生日在同一天的年份
    #请先使用命令pipinstallsxtwl安装依赖库后,再执行以下脚本importsxtwlymc=["正","二","三","四","五","六","七","八","九","十","冬","腊"]rmc=[&quo......
  • 查找消耗cpu最高的Java进程
    #!/bin/bashif[-z"$1"];then###1.先找到消耗cpu最高的Java进程###pid=`ps-eopid,%cpu,cmd--sort=-%cpu|grepjava|grep-vgrep|head-1|awk'END{print$1}'`if["$pid"=""];then......
  • linux系统查找文件命令find,xargs
    FIND命令形式:findpathname-options[-print-exec-ok]pathname要查找的路径(.表示当前目录,/表示系统根目录)-print输出-exec 对匹配的文件执行该参数所给出的shell命令-execrm{}\;注意{}和\;之间的空格-ok以一种更为安全的模式来执行shell命令find命令有很多选项或表达式,每一......
  • 二分查找
    经典二分查找,给定一个升序的整形数组nums和一个目标值target,查找target在nums中的位置,如果目标值存在返回下标,否则返回-1publicclassSolution{publicintSearch(int[]nums,inttarget){returnBinarySearch(nums,0,nums.Length-1,target);}......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性
    1、算法描述在数组中逐个查找元素,即遍历。2、上一篇文的实现结果在扎实打牢数据结构算法根基,从此不怕算法面试系列之003week0102-03代码实现线性查找法中,我们实现了如下代码:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音......