首页 >> 生活

查找发(查找发送邀请怎么接受)

2022年05月04日 09:04:04 生活 45 投稿:黎明远方

1、引言

笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进。不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或者在一些生产环境中会应用一些算法来解决实际问题。

就比如今天要介绍的第一个查找算法——二分查找法。假设要在 *** 薄中找一个名字为K大头的人,很习惯的办法就是从头开始翻页,直到进入以K打头的部分。但是这种 *** 的缺陷就是要逐一查找,时间较长。

于是我们可以有另外一个思路就是每次从中间开始查找,而以K打头的名字就在 *** 簿中间。再举一个简单的场景,假设登录Facebook时,Facebook会验证是否为自己网站的用户,那就必然要去数据库中作比对,如果逐一对比则用户等待的时间过长,影响用户体验,更合乎逻辑的做法是从中间开始查找,这样就会节约很长的等待时间。

2、二分查找法

二分查找是一种算法,其输入是一个有序的元素列表(注意:列表必须是有序的)。如果要查找的元素包含在列表中,二分查找则返回其位置,否则返回-1。

2.1 二分查找法的原理

举一个示例来讲解二分查找的工作原理。想必大家都玩过1~100的猜数字游戏,目标是以最少的次数猜到这个数字。每次猜测后,会有人告诉你这个数和要找的数是大了还是小了。如果我们从1开始慢慢一个一个数字进行猜测,这样的效率是很慢的,我们通常把这样的查找方式叫做简单查找,更准确的说法是傻找。

查找发

猜数字游戏

比较合理的查找 *** 就是从中间开始查找,如果先猜50的情况下,如果有人给你说大了,那么我们立马排除了后面50个数字,正确答案一定在前面50个数字中,然后我们继续猜测中间的数字,当有人告诉你小了,那么前25个数字也就排除了。一直循环这样下去,你会发现没用几步就可以得出正确答案。这就是二分查找的原理。

查找发

二分查找过程

2.2 二分查找法的代码实现

在我学习的过程中,我会尽量使用Java语言来编写算法,因为自己接触Java的机会比较多,而且Java语言也比较好用,特此奉上Java实现二分查找法的源代码。

/** * 1、二分查找法 适用于有序列表或者数组 */ public static int BinarySerach(int[] list, int item){ //定义一个低位,并赋值数组索引为0 int low = 0; //定义一个高位,并赋值数组索引为数组末尾=数组长度-1 int hign = list.length - 1; /** * 开始循环查找 * 查找结束条件为范围缩小到只包含一个元素时返回 */ while(low <= hign){ //定义一个中间值,用于接收数组的中间索引值,因为每回都是从数组的中间开始查找 int mid = (low + hign) / 2; int guess = list[mid]; //如果查询的索引值就为查找到数据,即返回 if(guess == item){ //返回中间索引 return mid; } //如果猜测的数较大,则舍弃后半部分数据,开始在前半部分查找 /** * 此时修改高位为前半部分的末尾索引 */ if(guess > item){ hign = mid - 1; } //如果猜测的数较小,则舍弃前半部分数据,开始在后半部分查找,此时低位索引应修改为后半部分数据 //的起始索引 else { low = mid + 1; } } //执行循环之后没有查找返回-1 return -1; }

2.3 运行时间

每一种算法都有自己的运行时间,而衡量运行时间的 *** 通常采用大O表示法。大O表示法是一种比较特殊的表示 *** ,指出了算法的速度有多快,根据刚才的推演,如果列表中有100个元素,最多只要猜7次就可以查找到正确答案,如果列表中包含40亿个数字,最多需要猜32次。二分查找的运行时间由此称为对数时间(或log时间),用大O表示法表示为O(logn)。

查找发

运行时间

版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人,因此内容不代表本站观点、本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至353049283@qq.com举报,一经查实,本站将立刻删除、维护您的正当权益。
tags:

关于我们

九五百科知识网每天更新各类百科知识问答,维新百科提供精准知识问答,行业知识问答,各种百科小知识解答,以及生活常识问答。学知识,必须九五百科网!

最火推荐

小编推荐

联系我们


Copyright © 2020-2022 锐萌镇雪策划 · 网站地图 · 内容地图 · XML地图 ·吉林锐萌网络科技有限公司 版权所有 备案:吉ICP备2023000282号-5