在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法。递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率
原创
2015-08-14 17:06:08
787阅读
十大经典排序算法(动图演示)0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比...
转载
2019-01-31 21:59:00
370阅读
点赞
一、 问题陈述假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,4。设
原创
2023-04-27 14:17:04
396阅读
雪花算法是一种生成分布式全局唯一ID的经典算法
导包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8</version>
</d
原创
2023-05-05 22:05:22
162阅读
Prim算法是一种用于求解图的最小生成树的算法。该算法得名于美国计算机科学家罗伯特·普林姆(Robert C. Prim)。Prim算法的基
之前写的回溯算法题,都没有时间整理,导致过了一段时间,再重新写这些题,就很懵的样子,所以来重新整理一下,这篇估计会不断的更新.我理解的回溯算法,其实就是一种暴力的for循环,只是这种循环是可以通过代码实现的,比如要实现k层的for循环,k是一个未知数,那么代码其实是写不出来的,因为k未知,就不知道要写多少个for循环,但是可以通过回溯,当然这么一说,回溯又有点像递归了。回溯解决的问题:组合问题:N
转载
2021-04-04 23:20:29
691阅读
2评论
分治算法分而治之,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。如:二分法、快速排序、归并排序,二叉树遍历(先遍历左子树再遍历右子树)等。步骤:分解:将原有问题分解为若干规模较小,相对独立,与原问题形式相同的子问题;解决:若子问题容易解决,则直接解;否则继续分解为更小的子问题,直到容易解决;合并:将
原创
2023-03-13 11:15:16
303阅读
退火算法(Simulated Annealing)是一种全局优化算法,用于在搜索空间中找到最优或近似最优解。它通过模拟固体退火的过程来搜索
Dijkstra算法是一种用于求解图中单源最短路径的算法。该算法得名于荷兰计算机科学家Edsger W. Dijkstra。Dijkstra算法的基
模糊算法,也称为模糊逻辑或模糊推理,是一种基于模糊集合理论的数学方法,用于处理模糊或不确定性信息。与传统的二值逻辑相比,模糊逻辑允许数据具有模糊性、不确定性和部分真实性。
背景记得上大学期间试着实现一个排列算法,可惜当时没有写出来,只是硬编码了几层循环,今天用递归终于写出来了。
原创
2021-07-21 15:23:54
784阅读
KMP算法 1.问题引出 字符串匹配问题 所谓字符串匹配,是这样 etcode的第28题 2. Brute-Force( ...
转载
2021-07-15 10:18:00
649阅读
点赞
2评论
十大经典排序算法(动图演示)0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比...
转载
2019-01-31 21:59:00
228阅读
整理电脑的时候,发现很久之前的课程设计,虽然很简单的课设,但还是想将它分享输来,不然就永远“烂”在我电脑里了,觉得有点可惜。 一、 问题陈述 假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,4。设计一个程序,求出所有可能由此输出的长度为4的车厢序列。 二、 问题分析与设计 车厢调度问题是实际生活中的一个抽象问
原创
2013-12-25 16:44:00
471阅读
查找算法查找算法查找的定义数组和索引二分查找穷举搜索并行搜索查找算法查找的定义查
原创
2022-11-18 01:01:11
257阅读
#mermaid-svg-26ewsbPLuyLPxRKg .label{font-family:'trebuchet ms', v
原创
2022-10-21 13:12:13
184阅读
时间复杂度:public int strStr(String haystack, String needle) {
int[] next = new int[needle.length()];
//next数组的生成
next[0] = 0;
int prefixLen = 0;//共同前后缀长度
int i = 1,
了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。有人称sp...
转载
2022-06-20 09:46:24
224阅读
快速排序算法执行流程: 1.找到当前数列的中间元素,将它作为基准值,并且保存起来. 2.分别使用基
原创
2022-07-22 09:50:27
171阅读