算法
文章平均质量分 97
愚者的自白
寻找自我ing
展开
-
求斐波那契数列的几种方法
求斐波那契数列的几种方法力扣练习记录使用Java和python在力扣上测试文章目录求斐波那契数列的几种方法Fabonacci数列介绍我的一些尝试递归尾递归使用循环和数组其他大佬的Fabonacci数列介绍Fabonacci数列比较著名的是以下这个问题兔子出生1个月后长大,2月后就有繁殖能力,有繁殖能力后每个月产1只幼兔。最开始有1只幼兔,求第n个月时有多少只兔子?(不用考虑兔子的雌雄和死亡)经过月份0 1 2 3 4 5月份 1 2 3 4 5 6 …… n幼兔 1 0 1 1 2原创 2020-09-22 19:39:40 · 782 阅读 · 0 评论 -
算法学习笔记_问题转换
学习编程知识的同时,梳理知识,也便于以后查找tags:《图解算法》、《算法图解》、B站视频问题转换什么是问题转换简而言之,就是将陌生的问题转换成熟悉的问题后,借助解决此熟悉的问题间接地解决原来陌生的问题。将相异代表系问题转换成二分图上的匹配问题相异代表系问题二分图上的匹配问题转换为二分图上的匹配问题将相异代表系问题转换成分图 上的匹配问题。转换后,根据表的输人,可以画出如上图所示的二分图。此图的最大匹配可以代表在社团中选出的会长名单当最大匹配的个数小于社团的个数.原创 2020-09-11 23:45:50 · 483 阅读 · 0 评论 -
算法学习_什么是算法
学习编程知识的同时,梳理知识,也便于以后查找tags: 《算法图解》、《图解算法》、B站视频目录什么是算法如何设计算法汉诺塔问题证明Tn=2^n-1算法实现发现算法的技巧什么是算法什么是算法?算法是在符合问题的限制下,将输入转换成输出的过程。计算机算法是人类利用计算机解决问题的技巧之一。生活中处处都是算法,如折枝飞机、做菜等等。程序员就是使用计算机执行每一种算法,以解决特定问题的人。如何设计算法设计算法的第一个好习惯是观察。观察是一切发现的开始。汉诺塔问题目的:将左方柱子上的盘.原创 2020-09-11 16:27:15 · 462 阅读 · 0 评论 -
算法学习笔记_贪婪算法
学习编程知识的同时,梳理知识,也便于以后查找tags: 图解算法、B站视频贪婪策略、NP完全问题、贪婪算法目录贪婪算法背包问题集合覆盖问题具体方法如下近似算法代码实现时间性能NP完全问题任何识别NP完全问题NP完全问题的一些判断依据一些常见的NP完全问题贪婪算法学习内容:学习如何处理不可能完成的任务:没有快速算法的问题(NP完全问题)学习识别NP完全问题,以免浪费时间去寻找解决它们的快速算法学习近似算法,使用它们可快速找到NP完全问题的近似解学习贪婪策略—一种非常简单的问题解决策略.原创 2020-09-09 10:41:41 · 493 阅读 · 0 评论 -
算法学习笔记_广度优先搜索
学习编程知识的同时,梳理知识,也便于以后查找tags: 图解算法、B站视频目录图实现图拓扑学排序最短路径问题树广度优先算法执行过程避免死循环运行时间图图由结点和边组成。与结点直接相连的结点称为邻居。不直接相连的不是。有向图结点之间箭头了解的图。其中关系是单向的。A->B, A有邻居,B没有。无向图没有箭头,直接相连的节点互为邻居。实现图图由多个结点组成。每个结点都与临近结点相连。可以使用散列表表示这种关系。graph = {}graph["you"] = ["a".原创 2020-09-08 12:21:15 · 315 阅读 · 0 评论 -
算法学习笔记_散列表
学习编程知识的同时,梳理知识,也便于以后查找tags: 图解算法、B站视频目录散列表散列函数创建散列表一些散列函数示例散列表应用案例防止重复将散列表用作缓存冲突解决冲突性能装填因子散列函数散列表最有用的基本数据结构之一。第一种学到的包含额外逻辑的数据结构。查找时间O(1)散列函数散列函数的要求必须一致。一个输入对应的输出是固定的不同的输入映射到不同的数字。第一种学到的包含额外逻辑的数据结构。散列表使用散列函数来确定元素的存储位置。散列表也被称为散列映射、映射、字典和关联数组。.原创 2020-09-07 09:53:27 · 588 阅读 · 1 评论 -
算法学习笔记_分而治之
学习编程知识的同时,梳理知识,也便于以后查找tags:图解算法、B站视频分而治之、递归、快速排序目录分而治之示例欧几里得算法重点在于这种思路快速排序快速排序算法的工作原理快速排序步骤时间复杂度常见算法时间复杂度表比较合并排序和快速排序算法的时间复杂度平均情况和最糟情况归纳证明分而治之有时候,我们可能会遇到任何已知的算法都无法解决的问题,这时候就要尝试使用掌握的各种问题解决方法来找出解决方案。分而治之(D&C)就是一种通用的问题解决方法。快速排序也是使用的分而治之的策略。分而治之是.原创 2020-08-29 11:11:08 · 497 阅读 · 0 评论 -
算法图解学习笔记_选择排序
目录数组与链表选择排序示例代码递归示例代码基线条件和递归条件栈调用栈递归调用栈降低内存要求数组与链表访问方式:随机访问、顺序访问数组支持随机访问,查找速度快,用的多链表插入和删除方便选择排序时间复杂度:O(n1/2n)=O(n*n)=O(n^2)快速排序时间复杂度:O(n log n)示例代码ddef findSmallest(arr): """查找最小值""" smallest = arr[0] smallest_index = 0 for i in ra原创 2020-08-26 10:56:56 · 100 阅读 · 0 评论 -
算法学习笔记_二分查找
学习算法知识的同时,梳理知识,也便于以后查找tags:《算法图解》、实现语言:Java、python3好记性不如烂笔头目录二分查找代码实现python代码实现Java代码实现二分查找时间复杂度:O(log n)代码实现一种实现方式:缩小查找范围边界python代码实现def binary_search(list,item): low = 0; high = len(list)-1 #当范围缩小到只有一个元素时,退出 while low <= high: #pyt.原创 2020-08-19 22:31:28 · 101 阅读 · 0 评论