首页 > 作文

查一下我现在的位置

更新时间:2023-03-06 20:44:10 阅读: 评论:0

摇臂摄像机-早樱品种

查一下我现在的位置
2023年3月6日发(作者:煎鱼不粘锅)

⼆分法查找元素的位置

⼆分法的⽤途:能在⼤量的数据中找到⾃⼰想找的元素,减少查找的循环的次数。

⼆分法的条件:是⼀个有序的序列,才能使⽤⼆分法。

⼆分法的原理:将⼀个有序数列,查找的时候利⽤中间值,来⼀步步缩⼩搜索的范围,最终找到最终结果。

1将数组长度为n的,排好序,升降序没有关系。

2先把数组的范围标记好分别⽤low,和high来表⽰数组的范围,然后找到数组的中间元素mid=(low+high)/2,和你所查找的元素

key进⾏对⽐,如果key的数值较为⼤的话,就进⼊(mid,high)的范围在进⾏查找元素,如果key的元素较为⼩的话就进⼊

(low,mid)的范围查找,每次循环这个步骤。

这时我们只需要根据key,与数组的最中间的值进⾏⽐较,根据结果改变low,high的值就好了。

看⼀下代码:这串代码的作⽤是将⼀个长为N的数组将其排序后,在查询K在排序后的位置。

#include

#include

#include

#include

#include

#include

#include

usingnamespacestd;

intarch(intz[],intn,intkey){//函数的功能查找元素,能代表长度,z数组名,key是要查找的元素。

intlow=1;

inthigh=n;//low,high是范围

intmid;//中间值

while(low<=high){

mid=(low+high)/2;

if(z[mid]==key)//如果找到元素之后,返回元素的位置

returnmid;

if(z[mid]>key){

high=mid-1;

}

elif(z[mid]

low=mid+1;

}

return-1;//如果没有找到就返回-1;

}

intmain()

{

intz[99];

inti,j,k,n;

cin>>n;

for(i=1;i<=n;i++){

scanf("%d",&z[i]);

}

scanf("%d",&k);

sort(z+1,z+n+1);

intflag=arch(z,i,k);//⼀个标志,看是否查找到元素

if(flag==-1)

printf("nofind");

elprintf("%dn",flag);

return0;

}

本文发布于:2023-03-06 20:44:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678106650162995.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:查一下我现在的位置.doc

本文 PDF 下载地址:查一下我现在的位置.pdf

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26 专利检索|