算法
一崶情书
树叶的一生,是为了归根?
展开
-
统计子字符串在文本中出现次数
统计子字符串在文本中出现次数原创 2022-08-25 12:16:59 · 176 阅读 · 0 评论 -
递归处理树形结构
递归处理应用场景…在一个后台管理系统中,必然少不了菜单和目录,而菜单和目录存在父子级关系,我们往往需要把它做成支持无限扩展,例如省里面有多个市,市里面有多个区,区里面多个镇…无限扩展,如何实现呢?很简单,递归就行,本文以菜单目录为例。案例:表设计表就4个字段,分别含义是:模块(菜单)主键,模块(菜单)名称,父模块(菜单)主键,排序号。这里是一张简单的菜单表,其中字段parent_module_id,是处理成树形结构的关键。先建一个vo值对象实体类@Data@ApiModel(descri原创 2020-07-07 00:38:48 · 1094 阅读 · 0 评论 -
二分查找
二分查找实现的思路:前提:查找的数组必须是有序数组1:选取一个基准数,然后经过一轮排序,把小于基准数的元素全部放在基准数左边,大于基准数的元素放置基准数的右边;2:如果目标值大于基准数,则截取中位右侧数组再次进行二分查找(重复第一步);3:如果目标值小于基准数,则截取中位左侧数组再次进行二分查找(重复第一步);4:直到找到对应对中位数才终止查找算法优势: 每经过一次比较,查找范围就缩小了一半方法一: /** * 方法1,while循环法 * @param array 排原创 2020-09-18 18:49:28 · 131 阅读 · 0 评论 -
数组冒泡排序,快速排序,原生排序方法的效率对比
数组排序有很多种方式,数据量小时效率差别不大,但数据量大的时候效率差别则十分明显,本文拿最常用的三种排序方法进行对比,即冒泡排序法,快速排序法,还有Arrays类提供的原生sort()方法。方法一:冒泡排序1 /** * 冒泡排序法,定义第三个临时变量实现两个数的交换----效率差 * @param array */ private static int[] sortMaoPao1(int[] array){ long start = System.原创 2020-09-18 18:19:00 · 698 阅读 · 0 评论 -
如何高效找出两个集合中的不同元素
从两个集合里面找出不同的元素不难,但是每个写法及实现的性能不一样,数量小的时候耗时差别不大,但数据量大的时候差别就十分明显了,如何解决优化?这就是算法的重要性了。本文以两个非空且自身无重复元素的两个集合举例。方法一:使用hashMap /** * 找出两个list的不同元素,使用hashMap高效特性,数据量越大性能优势体现越为明显 * @param list1 * @param list2 * @return */ public stati原创 2020-09-17 22:44:36 · 5896 阅读 · 3 评论 -
斐波那契数列
问题:一对刚出生的小兔子,出生后第4个月起每个月都生一对兔子,等小兔子长到第四个月后每个月又可以生一对兔子,如果兔子都长生不死,请问每个月的兔子有多少对?分析:1~6月第兔子对数分别是:1,1,2,3,5,8,规律就是每个月的兔子数时前两个月兔子的总和;思路有了,代码就不是问题了:第一种是递归法: /** * 方法一,递归法 * @param month * @return */ private static int rabbitRecursive(in原创 2020-09-17 11:04:50 · 443 阅读 · 0 评论