常见算法(基本查找、二分查找、分块查找冒泡、选择、插入、快速排序和递归算法)

一、常见算法-01-基本、二分、插值和斐波那契查找

1、基本查找/顺序查找

需求1:定义一个方法利用基本查找,查询某个元素是否存在

数据如下:{131,127,147,81,103,23,7,79}

需求2:定义一个方法利用基本查找,查询某个元素在数组中的索引

要求:不需要考虑数组中元素是否重复

需求3:定义一个方法利用基本查找,查询某个元素在数组中的索引

要求:需要考虑数组中元素是否重复

数据如下:{131,127,147,81,103,23,7,79,81}

2、二分查找/折半查找

  • 前提条件:数组中的数据必须是有序的
  • 核心逻辑:每次排除一般的查找范围

练习 

需求:定义一个方法利用二分查找,查询某个元素在数组中的索引

数据如下: {7,23,79,81,103,127,131,147}

 

总结:

3、插值查找(二分查找改进)

 

4、斐波那契查找(二分查找改进)

5、总结:

 

二、常见算法-02-分块,分块查找,哈希查找

1、分块查找 

⭐⭐练习 

分块查找
  核心思想:
       块内无序,块间有序
  实现步骤:
    1.创建数组blockArr存放每一个块对象的信息
    2.先查找blockArr确定要查找的数据属于哪一块
    3.再单独遍历这一块数据即可

2、扩展的分块查找(无规律的数据) 

3、扩展的分块查找(查找的过程中还需要添加数据) 

三、常见算法-03-冒泡排序和选择排序

1、冒泡排序

冒泡排序:相邻两个数据两两比较,小的放前面,大的放后面。

 

2、选择排序

选择排序:从0索引开始,拿着每一个索引商的元素跟后面的元素一次比较,小的放前面,大的放后面,一次类推。 

 

 

四、常见算法-04-插入排序和递归算法

1、插入排序

0索引的元素到N索引的元素看做是有序的,把N+1索引的元素到最后一个当成是无序的。
遍历无序的数据,将遍历到的元素插入有序序列中适当的位置,如遇到相同数据,插在后面。
N的范围:0~最大索引

 

2、递归算法 

递归值得是方法中调用方法本身的现象。

递归算法的作用

  • 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。

  • 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算

书写递归的两个核心:

  • 找出口:什么时候不再调用方法。

  • 找规则:如何把大问题变成规模较小的问题

递归的注意点:递归一定要有出口,否则就会出现内存溢出

练习——递归求和

需求:求1~100之间的和 

练习——递归求阶乘

 需求:用递归求5的阶乘,并把结果在控制台输出

5!= 5*4*3*2*1                100!= 100*99*98*97*96....*2*1;

五、常见算法-05-快速排序

练习——快速排序

第一轮:以e索引的数字为基准数,确定基准数在数组中正确的位置。
比基准数小的全部在左边,比基准数大的全部在右边。
后面以此类推。

//结果:1,2,3,4,5,6,7,8,9,10

 总结

六、Arrays 

 

1、Lambda表达式的标准格式

Lambda表达式是JDK8开始后的一中新语法形式。

         ( ) ->{   

                             

          }

  • ()对应着方法的形参
  • ->  固定格式
  • {}  对应着方法的方法体

函数式编程

函数式编程(Functional programming)是一种思想特点。
函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做。
而我们要学习的Lambda表达式就是函数式思想的体现。

2、总结:

1、Lambda表达式的基本作用?
                     简化函数式接口的匿名内部类的写法。
2、Lambda表达式有什么使用前提?
                     必须是接口的匿名内部类,接口中只能有一个抽象方法
3、Lambda的好处?
                      Lambda是一个匿名函数
                      我们可以把Lambda表达式理解为是一段
                      可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧
                      凑的代码风格,使Java语言表达能力得到了提升。 

3、Lambda表达式的省略写法

省略核心:可推导,可省略

  • 参数类型可以省略不写。
  • 如果只有一个参数参数类型可以省略,同时()也可以省略。
  • 如果Lambda表达式的方法体只有一行大括号,分号,return可以省略不写,需要同时省略。 

 七、五道算法题

练习1——Lambda表达式简化Comparator接口的匿名形式

定义数组并存储一些字符串,利用Arrays中的sort方法进行排序
要求:     按照字符串的长度进行排序,短的在前面,长的在后面。
                    (暂时不比较字符串里面的内容)

 练习2——按照要求进行排序

定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序
要求1:属性有姓名、年龄、身高。
要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序。
(姓名中不要有中文或特殊字符,会涉及到后面的知识)

创建Text类

或者用

  练习3——不死神兔

有一个很有名的数学逻辑题叫做不死神兔问题,有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月的兔子对数为多少? 

规律:从第三个数据开始,是前两个数据和                                                                                           (斐波那契数列)                                

 练习4——猴子吃桃子

有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个!以后每天猴子都吃当前剩下来的一半,然后再多吃一个,第10天的时候(还没吃),发现只剩下一个桃子了,请问,最初总共多少个桃子?

练习5——爬楼梯

可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶。
如果这个楼梯有20个台阶,小明一共有多少种爬法呢?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s学习--Secret详细解释与应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例(1)将明文密码进行base64编码(2)编写创建secret的YAML文…

如何设置让背景颜色不包括 padding 部分,顺带全面学习 background-clip 属性(可以实现文字渐变)

先解决需求 实现背景颜色不包括 padding 部分,直接给容器添加 css 属性:background-clip:content-box; 示例代码: .content-box-example {background-color: lightblue;padding: 20px;border: 1px solid black;background-clip: content-bo…

vue项目出现多次ElMessage弹框

问题: 解决方法: let message null if (message null) { message ElMessage.error(“登录过期,请重新登录”); } 最终效果:只出现一个弹框

AI大模型在穿戴设备健康中的心率深度融合与案例分析

文章目录 1. 架构设计2. 应用场景3. 实现步骤3.1 步骤1:数据预处理3.2 步骤2:边缘计算初步分析3.3 步骤3:数据上传到云端3.4 步骤4:云端复杂分析3.5 步骤5:深度学习模型训练与部署 4. 云端API设计4.1 安装Flask4.2 API…

centos7.8安装Mysql8.4

在集群中我们选择将Mysql安装在slave01节点上。 1.在官网下载mysql安装包MySQL :: Download MySQL Yum Repository 下载后上传到slave01节点的/opt/software目录下。 2.切换到root用户下(切换到root用户操作) 3.查看和删除安装的MySQL软件包和依赖包 r…

logback删除日志文件和文件夹

​​​​​一,事由和源码 logback版本1.2.11 网上找了很多都是无法删除文件夹的,原先使用的TimeBasedRollingPolicy无法删除日志的文件夹,有很多空的日期文件夹,于是查看TimeBasedRollingPolicy源码发现有校验不删除文件夹&#x…

k8s练习--StorageClass详细解释与应用

文章目录 前言StorageClass是什么 一、实验目的配置过程 二、实验环境实验步骤一、配置网络存储NFS:1.主机基础配置2.配置 NFS: 二、开启rbac权限:三、创建nfs-deployment.yaml四、创建storageclass资源五、验证:1.创建PVC验证2.创建一个pod验…

Pycharm SSH远程连接时出现报错,测试 SFTP 连接,连接到 ‘connect.westb.seetacloud.com‘ 失败

问题由来 很离谱!今天本来打算租借AutoDL的显卡完成一项深度学习的任务,很离谱的是同步文件夹的时候报了标题说的错。 就很莫名奇妙,一天都在网上找解决办法,结果都不对头。 其他报错 最后摸索着,在使用pycharm远程登…

基于django | 创建数据库,实现增、删、查的功能

1、在cmd中,输入指令进入mysql终端: mysql -u 用户名 -p 2、输入mysql的密码 3、输入指令,显示出所有的数据库 show databases; 4、输入指令创建表: create table 表名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 5、use …

Pr 2024下载安装,Adobe Premiere专业视频编辑软件安装包获取!

Premiere Pro,简称PR,无论是想要剪辑家庭录像,还是制作专业的影视作品,Premiere Pro都能为您提供强大的支持。 Premiere Pro以其卓越的编辑功能和强大的性能,助力用户在视频创作的道路上不断突破自我。 它具备丰富的视…

【python科学文献计量】关于中国知网检索策略的验证,以事故伤害严重程度检索为例

关于中国知网检索策略的验证,以事故伤害严重程度检索为例 1 背景2 文献下载3 数据处理1 背景 由于要进行相关研究内容的综述,需要了解当前我国对于事故伤害严重程度的研究现状,采用国内较为知名的检索网站(中国知网)进行文献数据集检索 由于最近知网出bug,检索的结果在…

521源码-源码下载-WordPress报错:Allowed memory size of 134217728 bytes exhausted错误解决方法

在wordpress中使用站内搜索或者打开一个页面时提示错误: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) 致命错误:允许耗尽内存大小为134217728字节(试图分配20480字节) 分析:经过检查发现&#x…

Sentinel限流学习

Sentinel限流学习 初识Sentinel运行sentinel雪崩问题服务保护技术对比微服务整合Sentinel 限流规则簇点链路 流控模式-关联流控模式-链路流控模式有哪些? 流控效果流控效果-warm up流控效果-排队等待 热点参数限流隔离和降级Feign整合Sentinel线程隔离有两种方式实现…

【conda】解决conda activate无效的问题

conda activate 虚拟环境名字执行上述命令失效,提示如下信息: 经查询,原因是新版的 conda 不再使用 activate 来激活虚拟环境,而是改用: source activate 虚拟环境名退出虚拟环境还是: conda deactivate…

小米员工自爆:35岁被裁后,投百份简历无人问津,一气之下把薪资由2W调为3W,简历改成英文,结果出乎意料

“35岁”,就像职场里一道无形的门槛,压得人喘不过气。一旦迈过这道坎,焦虑、迷茫、恐慌,接踵而至。 最近,我的朋友老张,就真切地体会到了这种“中年危机”。刚过36岁生日,他就收到了来自小米的裁…

【数据结构与算法(C 语言)】队列 --链队列

1. 前言 1.1 定义 队列:一种先进先出(first in first out,缩写 FIFO)的线性表。 队尾:允许插入的一端(rear) 队头:允许删除的一端 (front) 用链表标识的队列简称 链队列 1.2 队列示意图 2. 链队列存储结构…

Android Studio插件开发 - Dora SDK的IDE插件

IDE插件开发简介 Android Studio是一种常用的集成开发环境(IDE),用于开发Android应用程序。它提供了许多功能和工具,可以帮助开发人员更轻松地构建和调试Android应用程序。 如果你想开发Android Studio插件,以下是一…

MyBatis框架-开发方式+参数传递+#{}、${}+返回值处理+查询结果封装为对象+resultType

一、开发方式 MyBatis-Dao层Mapper接口化开发 二、注意事项 1、Mapper接口与Mapper.xml映射文件要满足4个对应 (1)Mapper接口的全类名必须与Mapper映射文件中的namespace相同 (2)Mapper接口中的每一个方法名在Mapper映射文件…

密码加密及验证

目录 为什么需要加密? 密码算法分类 对称密码算法 非对称密码算法 摘要算法 DigestUtils MD5在线解密工具原理 实现用户密码加密 代码实现 为什么需要加密? 在MySQL数据库中,我们常常需要对用户密码、身份证号、手机号码等敏感信息进…

pod 控制器介绍

一 pod 控制器相关理论介绍 1,Pod控制器 是什么 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行…