12.5_黑马数据结构与算法Java

news2024/11/26 2:00:08

目录

001 二分查找 算法描述

002 二分查找 算法实现

003 二分查找 问题1 循环条件

004 二分查找 问题2 中间索引

thinking:反码补码原码?

thinking:二进制转十进制?

thinking:无符号右移?

005 二分查找 问题3 比较符号

006二分查找 改动版

007 如何衡量算法好坏01

008 如何衡量算法好坏02

​编辑​编辑

009 时间复杂度 大O表示法1

010 时间复杂度 大O表示法2

012 二分查找 平衡版

013 二分查找 JAVA版

thinking:System.arraycopy?

014 二分查找 LeftRightmost

015 二分查找 LeftRightmost 返回值

视频

基础数据结构-001-二分查找-算法描述_哔哩哔哩_bilibili

001 二分查找 算法描述

f7a08693588d4e3aa250208ed32fc454.png

002 二分查找 算法实现

6ef4146ad5bc45df803d99f797f73ec7.png

003 二分查找 问题1 循环条件

05179eef7e514822b6747327a8aea98f.png

因为这次查询的最后时候,是i=j,且最后要查询的值也是当i=j的时候才拥有。

每一次的比较都有,但是单单缺少了最后一次的比较。也就是当i=j这一次。由于while循环的条件是i<j,因此因为i=j,就跳出while循环条件,从而输出-1 这个bug。

7b6876937ad347a79d2567d75434f921.png

004 二分查找 问题2 中间索引

thinking:反码补码原码?

这里涉及到JAVA原码补码反码中的知识点,又恰巧当时学习黑马JAVA上的时候这节课跳过了。遂来补课。

运算符-12-多学一招原码反码补码_哔哩哔哩_bilibili

 8个bit=1个字节

9109a3b28374454eada2b1e923987769.png

thinking:二进制转十进制?

43e395138b414f6b8fc8d7b1c78475dd.png

关于二进制与十进制互转的方法(简单好学!)_二进制转十进制_猿西西的博客-CSDN博客

1e833277dbb44255ae8f7d40cd9531b5.png

bc4fd542603a4c27bb086dc6a3a7eea1.png

24bad5b5202a496e8cf67d7cec568da7.png 8c1917070903414781e5ea8e621d40ba.png

00912da04ceb45b6bc9ff7b2fbd03f4e.png

3240359a9fc84654b8b19e298be1af49.png

318745133c6945509ac6fffe0095ab8d.png7e3a6c1864554e95b7a98d1e439eb336.png 7e8c389bab5649be8119bdc940712bdd.png

38530d7446aa45fe95a595ef1d59badf.png

因此,一个字节他的取值范围是正的127到负的128. 

232dc9cadd2d4544819b8f82f4315279.png

6bb31eb5a4ed41aab773cf112e71ed6c.png

fd7da9171d1d44f3996f7efcc3233953.png

右移一次,相当于除2

1df1fa3917a64e4d83a0a184a59946cf.png

thinking:无符号右移?

c114db99aca64c8fb5ec0027be947485.png

在java中,总是将最高位视为符号位

接下来,我们来看回数据结构的视频。

b3e9c6a53fc94b2190909385c9938739.png

产生这样的情况是因为,j本来是一个很大的数字,当第二次再加上j的时候,这个m就变得很大了,大到没有办法用计算机语言正常表示了,因为java中采用的有符号的表示方式。

c0fc3e5046634afbab6c21079c814379.png

71eabbcd5653482e87d7b3b9c317783b.png

有两种表现形式,一种是有符号的,一种是无符号的。无符号的表现形式就是正常的,但是java中采用的是有符号的,因此就会出现负数的情况。

因此采用无符号右移,解决这样的情况。而且也遵循除以2的原则,如果有小数的话,采用向下取整。

2467269accbf44f1989bf72a1388ccde.png

005 二分查找 问题3 比较符号

3cafb1fc8a334d009085dfd1814f5b7e.png

006二分查找 改动版

注重理解!

j指向的只是边界,而i指向的有可能还要参与比较。因此不可以加等于号,加了之后,j也就是边界也会参与比较。当查询的元素不存在的时候,就会出现死循环。因此,改动版的也称为左闭右开。而基础版的叫做左闭右闭。开:只是边界。闭:既是边界,又是有可能参与比较的东西。

b14db961e5d2440a966011ce53054732.png

007 如何衡量算法好坏01

008 如何衡量算法好坏02

一般采用事前分析法。

假设每一行代码的运行速率是相同的。

找出运行规律,计算两种代码运行了多少次。

当基数小的时候是看不出什么的,要让基数变大,才可以看出哪个算法好哪个算法不好。

二分查找法:找规律

左(二分查找),右(线性查找)

009 时间复杂度 大O表示法1

010 时间复杂度 大O表示法2

012 二分查找 平衡版

问题:当要查询的元素在最左边或者在最右边的时候,要查询的次数不相同

改动后:

013 二分查找 JAVA版

thinking:System.arraycopy?

System.arraycopy的使用方法详解_HiSiri666666的博客-CSDN博客

014 二分查找 LeftRightmost

left

Right

015 二分查找 LeftRightmost 返回值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像语义分割算法(FCN/U-net)

Some definitions &#xfeff; 与目标检测不同&#xff0c;语义分割任务不但要对图片中的物体的位置和类别进行预测&#xff0c;还要精确地描绘出不同类物体之间的边界&#xff08;注意是不同类物体&#xff0c;而不是不同物体。若对同一类的不同物体也进行区分&#xff0c;则…

【CentOS】配置 Apache 服务

yum install httpd -y# 查看是否安装成功 httpd -v # 出现版本号表示成功# 启动服务 systemctl start httpd# 查看状态 systemctl status httpd # running 即可成功 ● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disable…

Unity环境配置并解决visual studio 不能智能代码提示Unity代码问题(一)

1、请先安装好unity和Visual Studio 2019 2、Visual Studio需要安装如图&#xff08;2019才会有那个移动的可以勾选&#xff09; 3、Unity配置 file->build setting windows->package manager 安装如下图 edit->preferences 3、创建c#脚本 如果还是没能智能提…

JDBC简介及快速入门-黑马(P1)

黑马视频b站链接&#xff1a; 01-JDBC简介&快速入门_哔哩哔哩_bilibili &#x1f436;一、JDBC 简介 JDBC 概念&#xff1a; JDBC 就是使用 Java 语言操作关系型数据库的一套 API。 全称&#xff08;Java DataBase Connectivity&#xff09; Java 数据库连接 JDBC 本质…

佳易王会员管理软件店铺积分以及积分兑换系统

一、佳易王会员管理软件大众版 部分功能简介&#xff1a; 1、会员信息登记 &#xff1a;可以直接使用手机号登记&#xff0c;也可以使用实体卡片&#xff0c;推荐用手机号即可。 2、会员卡类型 &#xff1a;可以自由设置卡的类型&#xff0c;比如&#xff1a;充值卡、计次卡、…

使用Docker在Debian上构建GRBL模拟器镜像:简明步骤和操作指南

概述编译编写 Dockerfile构建镜像运行测试其他 概述 本文将详细介绍如何在Debian系统上通过Docker构建GRBL模拟器镜像&#xff0c;以便进行数控机床的仿真测试。GRBL是一种开源的控制系统&#xff0c;用于控制三轴CNC机床、激光雕刻、激光切割&#xff0c;而在Docker容器中运…

力扣第374场周赛题解

这一场周赛的题目是比较难的一次&#xff0c;写了1个多小时就写了两个题目。 首先第一题&#xff1a; 纯水题&#xff0c;遍历然后进行一下判断就可以解决了。这边就不放代码了。 第二题&#xff1a; 这个题目&#xff0c;我觉得难度非常大&#xff0c;其实代码量也不大都是很…

二维码智慧门牌管理系统升级:强化信息安全的防伪技术

文章目录 前言一、解决方案概览二、具体措施 前言 随着二维码智慧门牌管理系统在城市管理、企业形象展示和商铺门店等领域的广泛应用&#xff0c;信息安全问题愈发凸显。如何保障二维码门牌信息的安全性成为当前迫切需要解决的难题。 一、解决方案概览 专码专用&#xff1a;每…

每日3道PWN(第二天)

ciscn_2019_n_1 参考&#xff1a; [BUUCTF-pwn]——ciscn_2019_n_1-CSDN博客 [BUUCTF]PWN5——ciscn_2019_n_1_ciscn_2019_n_4-CSDN博客 BUUCTF—ciscn_2019_n_1 1-CSDN博客 checksec一下 64位栈溢出 按f5查看main函数&#xff0c;双击可疑函数 发现含有命令执行的且发现fl…

不愧是字节出来的,真的太厉害了。。。

前段时间公司缺人&#xff0c;也面了许多测试&#xff0c;一开始瞄准的就是中级水准&#xff0c;当然也没指望能来大牛&#xff0c;提供的薪资在15-20k这个范围&#xff0c;来面试的人有很多&#xff0c;但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

反三角函数基本性质和函数图形

文章目录 反三角函数反三角函数图形利用反函数的性质绘制反三角图形反三角函数的定义域&值域反三角函数的恒等式推导 反三角函数 反三角函数 (wikipedia.org) 反三角函数图形 sin ⁡ ( x ) , arcsin ⁡ ( x ) \sin(x),\arcsin(x) sin(x),arcsin(x) cos ⁡ ( x ) , arccos …

2022年11月10日 Go生态洞察:十三年的Go之旅

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

11、信息打点——红队工具篇FofaQuakeSuize水泽Arl灯塔

网络空间测绘引擎 Fofa Quake shodan Zoomeye 主要搜关联资产、特征资产、资产信息&#xff08;在测绘引擎上直接搜IP&#xff0c;它会显示所有与该域名有关的信息。&#xff09; fofa和Quake测绘引擎集成化工具&#xff1a;Finger 自动化信息收集项目 ARL灯塔 Suize水泽 …

微信如何批量发送朋友圈?

批量发送朋友圈 发朋友圈 支持发送图片或者图文&#xff0c;可选择多个在线微信一起发&#xff0c;可立即发送&#xff0c;也可定时发送&#xff1b; 1、点击【发朋友圈】&#xff0c;选择要发圈的微信号和朋友圈类型&#xff08;立即/定时&#xff09;&#xff0c;编辑设置好…

python精细讲解,从代码出发,适合新手宝宝食用的python入门教学【持续更新中】

文章目录 1、输入输出1.1 输入语句1.2 输出语句 2、List列表操作2.1 取值取单个元素&#xff1a;[]取出现的第一个元素&#xff1a;index 2.2 添加操作追加&#xff1a;append插入&#xff1a;insert 2.3 删除操作removepopdelclear清空 copy复制操作列表相关的数学操作数数&am…

类和对象——(7)this指针

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 人生就像骑单车&#xff0c;想保持平衡…

vmware ubuntu22 安装vmtools并设置共享文件夹

我是你爹&#xff0c;再不会就紫砂。 权限不够或没读写权限自己改下就行。 1. 主机下新建文件夹&#xff0c;并如下图设置成共享 2. 把上面文件夹路径添加到共享文件夹里面 3. 开启ubuntu&#xff0c;在登陆界面显示之前我们会看到下图的重新安装vmware tools由灰变黑&#x…

C语言--每日选择题--Day36

第一题 1. 以下关于指针的说法,正确的是() A&#xff1a;int *const p 与 int const *p等价 B&#xff1a;const int *p 与 int *const p等价 C&#xff1a;const int *p 与 int const *p 等价 D&#xff1a;int *p[10] 与 int (*p)[10] 等价 答案及解析 C const 在*的左侧&…

坚鹏:中国工商银行内蒙古分行数字化转型发展现状与成功案例培训

中国工商银行围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局&#xff0c;深入推进数字化转型&#xff0c;加快形成体系化、生态化实施路径&#xff0c;促进科技与业务加速融合&#xff0c;以“数字工行”建设推动“GBC”&#xff08;政务、企业、个人&…

人工智能学习6(贝叶斯实现简单的评论情感分析)

编译工具PyCharm 文章目录 编译工具PyCharm 文本分析与表示实现方式&#xff1a;文本表示方法文本相似度计算LDA主题模型 朴素贝叶斯算法应用&#xff1a;评论情感分析&#xff0c;工具评论分析是好评还是差评获取数据加载停用词内容标准化&#xff08;将每一句话划分成一个个的…