1常见算法种类梳理xiaoyanhahaha

枚举所有的可能,从所有候选答案中搜索正确的解

一般使用while循环或者if语句实现

最大特点:在面对问题时会去尝试每一种解决方法

重复性的将问题分解为同类的子问题,然后解决这些子问题,最终完整解决问题

和平常用到的递归函数类似,是一种直接或者间接的调用自身函数或者方法的算法

递推像是多米诺骨牌,根据前面几个得到后面的

递归是大事化小,将复杂的问题层层转化为同类简单子问题

一个问题既可以用递推解决也可以用递归解决的时候,选择递推算法,因为递推的效率比递归高

分而治之,把一个复杂的问题分解成两个或者更多的相同或者相似的问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直接求解,原问题的解就是子问题的解的合并

处理数据相当多、求解过程比较复杂、直接求解法会比较耗时

将一个难以直接解决的大问题,分割成一些规模较小的相同或相似问题,以便各个击破,分而治之

重点解决以下2个问题:

编写涉及数组的递归函数时,基线条件通常情况下都是数组为空或者只包含一个元素。编程陷入困境时,可以检查基线条件设置的是否正确

2.确定如何缩小问题的规模,然后不断将问题分解为更小的问题,直到符合基线条件

在求解一个问题时,总是做出在当前看来是最好的选择(即只是得出一个在局部某种意义上的最优解),不从整体最优方面考虑问题

核心是贪心策略的选择,必须确保选择的贪心策略无后效性,即某个状态以前的过程不会影响以后的状态,只是与当前的状态有关

从问题的某一个初始解出发逐渐逼近给定的目标值,这样可以尽快求出更好的解。当达到算法中的某一步不能再继续前进时,就停止运行并给出一个近似解

是一种通过暴力穷举的方式解决问题的算法,是深度优先搜索的一种具体应用

适合解决没有要求求最优解的问题,如果采用,一定要注意跳出条件及搜索完成的标志,否则会陷入泥潭不可自拔

先暂时放弃关于问题规模大小的限制,并将问题的候选解按照某种顺序逐一进行枚举和检验:

回溯算法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已经被搜索一遍才结束

回溯算法在用来求问题的任意解时,只要搜索到问题的一个解就可以结束

回溯算法为了求得问题的正确解,会先委婉地试探某一种可能的情况,在进行试探的过程中一旦发现原来选择的假设情况是不正确的,立即会自觉的退回一步重新选择,然后继续向前试探,如此这般反复进行,直到得到解或证明无解时才放弃

回溯算法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:

是一种不断用变量的旧值递推新值的过程,可以将迭代算法分为两种:精确迭代和近似迭代(比如二分法、牛顿迭代法)

1)所需的迭代次数是个确定的值,可以计算出来,可以构建一个固定次数的循环来实现对迭代过程的控制

2)所需的迭代次数无法确定,需要进一步分析出用来结束迭代过程的条件

递归是自顶向下逐步拓展需求,最后自下向顶运算,即由f(n)拓展到f(1),再由f(1)逐步算回f(n);递归是在函数内调用本身

迭代是直接自下向顶运算,由f(1)逐步算回f(n);迭代是循环求值

在大量的信息中寻找一个特定的信息元素

基本运算是在关键字之间进行比较

可用平均查找长度来衡量查找算法的性能

现实场景中,用到查找算法的效率非常高

解决问题时遵循具体情况具体对待的原则,不要一味追求使用最高效率的算法

建议初学者尽量用多种查找算法来解决同一个问题,这样可以比较不同查找算法的效率,并能深入体会不同算法的思想精髓

针对一连串数据,按照其中的某个或者某些关键字的大小,以递增或者递减的样式排列起来的操作

目的是将一组无序的记录序列调整为有序的记录序列,可分为内部排序和外部排序

首先要求其具有一定的稳定性,即当2个相同的元素同时出现于某个序列之中,经过一定的排序算法之后,两者在排序前后的相对位置不发生变化

通过特定的算法因式将一组或者多组数据按照既定模式进行重新排序

THE END
1.10大计算机经典算法「建议收藏」腾讯云开发者社区BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂度,五位算法作者做了精妙的处理。 https://cloud.tencent.com/developer/article/2089934
2.什么是算法,表示算法的4种方法(小白必读)我们知道,计算机解决任何问题都是靠程序驱动完成的。指挥计算机进行操作的一连串指令序列称为程序。计算机的基本原理是存储程序和程序控制,计算机程序可描述为程序=算法+数据。 那么,算法是什么呢?阅读完本节内容,相信大家能找到这个问题的答案。 什么是算法 https://blog.csdn.net/x15297649174/article/details/137055815
3.吴师兄学算法五分钟学算法吴师兄学算法(www.cxyxiaowu.com)提供许多数据结构与算法学习的基础知识, 涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。https://www.cxyxiaowu.com/
4.算法概述# 什么是算法? 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。 (得嘞,成功的把一个简单的词解释成我看不懂的样子) 算法: 12世纪的算法:是指用阿拉伯数字进行算术运算的过程 https://www.jianshu.com/p/8c8d20a9bde8
5.算法(第4版)(豆瓣)本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些 Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。配套网站 algs4.cs.princeton.edu 提供了本书内https://book.douban.com/subject/19952400/
6.“百亿票房演员”到底是怎么个算法?“百亿”到底是怎么个算法? 这名头最开始是吴京凭《战狼2》《流浪地球》成为爆爆京之后开始有的,毕竟单《战狼2》就56.8亿票房了。 在这之后,基本每一篇报导《流浪地球》战果的文章,都会提到吴京的“百亿”身份。 Title像会传染似的,很快,又有人管黄渤叫“百亿影帝”,而且还是“百亿票房第一人”。 https://m.1905.com/m/news/flipboard/1483672.shtml
7.我们需要什么样的“算法”?我们需要什么样的“算法”?新华社发 新华社发 您是否有过类似经历:在求职网站填写一份有关工作喜好的调查,网站会自动推送匹配的岗位;打开购物软件,发现页面上多是近期搜索或浏览过的商品;通过App阅读一条养生信息,随后便会经常收到养生知识、养生产品的广告推送……伴随着信息技术迅猛发展、大数据广泛应用,算法http://baijiahao.baidu.com/s?id=1683467663784249161&wfr=spider&for=pc