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

一、常见算法-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个台阶,小明一共有多少种爬法呢?

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WordPress子比主题美化-首页动态的图片展示

WordPress子比主题首页动态的图片展示 WordPress子比主题首页添加动态的图片展示,其他程序也可以用,复制代码到相应位置即可,也可作为指定分类,重点内容等,可以适合各个场景,需要的自取。 图片展示: 教程…

Spring源码之BeanDefinition的加载

Spring源码之BeanFactory和BeanDefinition BeanFactory和BeanDefinitionBeanFactoryBeanDefinition源码分析创建AnnotationConfigApplicationContext对象注册配置类refresh方法 BeanFactory和BeanDefinition BeanFactory BeanFactory是Spring提供给外部访问容器的根接口&…

MVC和MVVM

MVC Model层:用于处理应用程序数据逻辑的部分,通常负责在数据库中存取数据 View(视图)处理数据显示的部分。通常视图是依据模型数据创建的 Controller(控制器)是处理用户交互的部分。通常控制器负责从视…

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中,我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配,这在大大降低推理延迟的情况下保证了性能。此外,我们针对YOLO…

养生与健康|一起跟随林曦老师养个元气满满

暄桐是一间传统美学教育教室,创办于2011年,林曦是创办人和授课老师,教授以书法为主的传统文化和技艺,皆在以书法为起点,亲近中国传统之美,以实践和所得,滋养当下生活。    在暄桐教室的六阶…

XCP协议系列介绍02-基于ASAP2 Tool-Set生成A2l介绍

本文框架 1. 前言2. ASAP2 Tool-Set系统介绍2.1 ASAP2 Creator介绍2.2 ASAP2 Updater介绍2.3 ASAP2 Merger介绍2.4 ASAP2 Comparer及Checker介绍2.5 ASAP2 Modifier介绍2.6 ASAP2 Studio介绍 3. 项目实操说明3.1 项目实操建议3.2 工具下载地址及使用 1. 前言 在XCP观测及标定整…

计算机网络期末复习(1)计算机网络在信息时代对的作用 计算机网络的定义和分类 三种交换方法

计算机网络在信息时代扮演着至关重要的角色,它极大地改变了我们生活、工作和学习的方式。 计算机网络在信息时代的作用 信息共享与传播:计算机网络使全球范围内的信息快速共享成为可能,无论是新闻、学术研究还是娱乐内容,都可以…

【C++】类和对象——构造和析构函数

目录 前言类的六个默认构造函数构造函数1.构造函数的概念2.构造函数的特性 初始化列表1.构造函数整体赋值2.初始化列表 析构函数1.析构函数的概念2.析构函数的特性 前言 类和对象相关博客:【C】类和对象   我们前面一个内容已经讲了关于类好对象的初步的一些知识&…

【MyBatis】零基础从入门到进阶(源码级深入详解)

1 MyBatis概述 1.1 框架 ● 在⽂献中看到的framework被翻译为框架 ● Java常⽤框架: ○ SSM三⼤框架:Spring SpringMVC MyBatis ○ SpringBoot ○ SpringCloud ○ 等。。 ● 框架其实就是对通用代码的封装,提前写好了⼀堆通用…

数据库系统概论(个人笔记)(第三部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)3、SQL介绍3.1 SQL查询语言概述3.2 SQL数据定义3.3 SQL查询的基本查询结构3.4 其他基本操作3.5 设置操作3.6 空值3.7 聚合函数3.8 嵌套子查询3.9 数据库的修改 3、SQL…

看车牌识别API如何应用到实际

车牌识别技术作为一种先进的识别系统,在现代城市的交通管理和安全领域扮演着日益重要的角色。本文将深入探讨车牌识别API 接口在智能停车、安全监控以及数据分析等方面的具体应用。通过详细研究这些应用场景,我们可以更好地理解这项技术如何提升交通流畅…

Laravel和ThinkPHP框架比较

一、开发体验与易用性比较 1. 代码可读性: - Laravel以其优雅的语法和良好的代码结构著称,使得代码更加易读易懂。 - 相比之下,ThinkPHP的代码可读性较为一般,在一些复杂业务场景下,可能会稍显混乱。 让您能够一站式…

WordPress中借助Table of Contents Plus+Widget Options插件,实现仅在文章侧边栏显示文章目录的功能

本文转自博主的个人博客:https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接:点我访问 序言:今天心血来潮,写了一篇文章,忽然发现自己的文章极少有目录,这对于长文章的阅读来说是十分不利的&#…

Day 10:100322. 删除星号以后字典序最小的字符串

Leetcode 100322. 删除星号以后字典序最小的字符串 给你一个字符串 s 。它可能包含任意数量的 ‘’ 字符。你的任务是删除所有的 ’ 字符。 当字符串还存在至少一个 ‘*’ 字符时,你可以执行以下操作: 删除最左边的 ‘*’ 字符,同时删除该星号…

STM32(十):SPI (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中USART通信协议来串口通信,并向XCOM串口助手发送信息。这篇文章我们来介绍一下如何用STM32单片机中SPI接口来实现LED的闪亮并玩转WS2812B灯带。 一、实验原理 串行通信之前的博客里有所介绍,可以查看以下…

python中利用cartopy库绘制SST图像

1. Cartopy简介 Cartopy 是一个开源的 Python 库,用于绘制地图和地理数据分析。它结合了 matplotlib 的绘图功能和 shapely、pyproj 等库的地理空间数据处理能力,为用户提供了在地图上可视化数据的强大工具。 以下是 Cartopy 的一些主要特点和功能&#…

2、浮动的用法特点,解决父元素高度塌陷解决

一、浮动 用法:浮动就是使用float样式,使元素脱离文档流。属性值有三个:none默认left right 特点: 常用于文字环绕图片浮动的元素脱离文档流影响其他元素排列造成父元素高度塌陷 1、一旦元素设置了浮动,元素就会脱离…

Python知识点14---被规定的资源

提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 在Python中被规定的东西不止有常识中的那些关键字、构造器等编程语言…

汇编原理 | 二进制、跳转指令、算数运算、

一.二进制 two complement reprentation(补码) 二进制的运算: 6的二进制 0110 -6的二进制 如何表示? 四个bit的第一个bit表示符号:1负0正 -6表示为1010 解释: 0 0000 1 0001 -1 1111(由 …

自然语言处理(NLP)—— 置信度(Confidence)

1. 置信度(Confidence)的概念 置信度(Confidence)在机器学习和统计中通常指一个模型对其做出的预测是正确的确信程度。在分类任务中,置信度通常由模型赋予特定类别的概率值来表示。例如,在文本分类或实体识…