当前位置:首页 » 操作系统 » 漫画说算法

漫画说算法

发布时间: 2022-12-29 00:50:37

1. 什么是算法算法的特性有哪些

算法,指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。

特征:有穷性,算法必须能在执行有限个步骤之后终止;确切性,算法的每一步骤必须有确切的定义;输入项,一个算法有0个或多个输入,以刻画运算对象初始情况;输出项,一个算法有一个或多个输出以反映对输入数据加工后的结果;可行性,算法中执行的任何计算步骤都可被分解为基本的可执行的操作步骤。

(1)漫画说算法扩展阅读:

算法可以宏泛分为三类:

1、有限的、确定性算法:这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。

2、有限的、非确定算法:这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。

3、无限的算法:是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

2. 推荐一些关于算法的书籍

1、数据结构与算法分析:C语言描述(适合入门)

这本书相对于算法导论要简单一些,更适合入门。算法导论其实有比较强的理论性,看起来比较吃力。

《数据结构与算法分析:C语言描述》内容简介:书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能、效率以及对运行时间分析的基础上考查了一些高级数据结构,从历史的角度和近年的进展对数据结构的活跃领域进行了简要的概括。由于《数据结构与算法分析:C语言描述(原书第2版)》选材新颖,方法实用,题例丰富,取舍得当。《数据结构与算法分析:C语言描述》的目的是培养学生良好的程序设计技巧和熟练的算法分析能力,使得他们能够开发出高效率的程序。从服务于实践又锻炼学生实际能力出发,书中提供了大部算法的C程序和伪码例程。

2、算法设计与分析基础(适合入门)

作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法都能进行准确分类,从而使本书的读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。

3.0、算法引论:一种创造性方法(适合入门)

和普通的算法书不同,这本书从创造性的角度出发——如果说算法导论讲的是有哪些算法,那么算法引论讲的就是如何创造算法。结合前面的算法设计与分析基础,这本书把能解决的算法问题数量扩大了一个数量级。

3.1 算法竞赛 | 信息学奥赛一本通(算竞入门)

AlphaWA同学推荐的入门书籍,网上没有PDF版本,自己去淘宝买喽。

3.2 算法竞赛 | 算法竞赛进阶指南(算竞进阶)

3. 关于ACM的动漫会是什么样

《算法少女野崎君》:一直喜欢的男生竟然是ACM金牌得主!什么!让我加他们队! 《黑子的算法》:曾经我们是雄霸一方的ACM战队,最终升学到了不同的学校,因为队长对胜利的执迷,他们都不是最初的他们了,所以我要写出更厉害的代码更精准的算法,在ACM比赛中打赢他们,让他们知道队长你的信念是不对的!火神你会帮我吧? 《Free!》:曾经一起愉快的学编程!最后你竟然只爱编程不参加ACM比赛!浪费才华!我一定不会输给你! 《Fate系列》:为了争夺最后的ACM金牌!master!我来帮你写算法! 《樱兰高校ACM部》:一个天然的算法天才少女误入樱兰ACM竞赛码神俱乐部 《ACM特优生》:为啥男主代码写的永远比我短小精悍健壮性高。

4. 漫画算法--小灰的算法之旅

人们常说算法是程序员的内功,
我也觉得这是每个程序员的必修课。
算法注重效率和节约空间,
如何更优更优雅的解决问题。
相对来说是比较难而且比较枯燥的,
这本书生动形象的解释了常用的数据结构以及排序方法,
后面还有常用算法部分讲解,
是入门的比较不错的书之一。

这本书也是同样缺点就是不够深入,
适合入门,如果想继续深究还需要看更多的书。
整体来说还是比较不错的比较简单易懂。

5. 《漫画算法》—— 【3】树

在树的结构中,树的定义如下。
树(tree)是n(n>=0)个节点的有限集,当n=0时,称为空树。在任意一个非空树中,有如下特点:

1、有且仅有一个特定的称为根的节点。
2、当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。

【相关节点】

树的最大层级树,被称为树的高度或深度。

树的每个节点最多有2个孩子节点。
树的一种特殊形式。树的每个节点 最多有2个孩子节点

二叉树的两个孩子节点,一个被称为 左孩子 ,一个被称为 右孩子 。这两个孩子节点的顺序是固定的。

二叉树有两种特殊形式:满二叉树、完全二叉树。

满二叉树 :一个二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层接上。简言之,满二叉树的每一个分支都是满的。

完全二叉树 :对一个有n个节点的二叉树,按层级顺序编号,则所有节点的编号为从1到n。如果这个树所有节点和同样深度的满二叉树的编号为从1到n的节点位置相同,则这个二叉树为完全二叉树。

一棵树,若为满二叉树,那么一定是完全二叉树。反之,不一定。

在内存中存储

为什么这么设计?可以更方便的定位孩子节点、父节点。
若父节点的下标是parent,那么左孩子节点下标是2 parent+1,右孩子节点下标是2 parent+2。
反之,若左孩子节点下标是leftChild,那么父节点下标是(leftChild - 1)/2。
稀疏二叉树,用数组表示会很浪费空间。

二叉树的应用:查找操作、维持相对顺序。

1、查找

二叉查找树在二叉树的基础上增加了以下几个条件:

如果左子树不为空,则左子树上所有节点的值均小于根节点的值;
如果右子树不为空,则右子树上所有节点的值均大于根节点的值;
左、右子树也都是二叉查找树。

对于一个节点分布相对均衡的二叉查找树来说,如果节点总数是n,那么搜索节点的 时间复杂度都是O(logn) ,和树的深度是一样的。

2、维持相对顺序(插入)

二叉查找树的特性保证了二叉树的有序性,因此还有另外一个名字:二叉排序树。

插入的过程中,可能会出现需要二叉树进行自平衡,例如下图的情况:

如图所示,不只是树的外观看起来怪异,查询节点的时间复杂度也退化成了O(n)。

二叉树的自平衡的方式有很多种,如红黑树、AVL树、树堆等。

二叉树的遍历:
从节点之间位置关系的角度:
* 前序遍历:输出顺序:根节点、左子树、右子树
* 中序遍历:输出顺序:左子树、根节点、右子树
* 后序遍历:输出顺序:左子树、右子树、根节点
* 层序遍历:按照从根节点到叶子节点的层级关系,一层一层横向遍历各个节点。

从更宏观的角度:
* 深度优先遍历(前、中、后序遍历,前中后是相对根节点)
* 广度优先遍历(层序遍历)

二叉堆:本质上是一种完全二叉树。
二叉堆本质上是一种完全二叉树,分为2个类型:

最大堆 :任何一个父节点的值,都大于或等于它左、右孩子节点的值;
最小堆 :任何一个父节点的值,都小于或等于它左、右孩子节点的值。
二叉堆的根节点,叫作 堆顶 。最大堆的堆顶是整个堆中最大元素,最小堆的堆顶是整个堆中最小元素。
二叉堆虽然是一个完全二叉树,但它的存储方式并不是链式存储,而是顺序存储,如下图所示:

假设父节点的下标是parent,那么它的左孩子的下标就是 2 * parent + 1 ,右孩子的下标就是 2 * parent + 2

二叉堆的3种操作(假设是最小堆):
1、插入节点:时间复杂度O(logn)
插入节点是通过“上浮”操作完成的:当二叉堆插入节点时,插入位置是完全二叉树的最后一个位置,将该节点与它的父节点进行比较,如果该节点小于它的父节点,那么该与它的父节点交换位置,直到比较到堆顶位置。
2、删除节点:时间复杂度O(logn)
删除节点是通过“下沉”操作完成的:将要删除的节点看作是堆顶,只看该节点及它下面的部分。因为堆顶元素要进行删除,将最后一个节点元素替换堆顶元素,将替换后的元素与它的左、右子树进行比较,如果左、右孩子节点中最小的一个比该节点小,那么该节点“下沉”,直到叶子节点。
3、构建二叉堆:时间复杂度O(n)
构建二叉堆,也就是把一个无序的完全二叉树调整为二叉堆,本质就是让所有非叶子节点一次“下沉”。

优先队列不再遵循先入先出的原则,而是分为两种情况:

最大优先队列 ,无论入队顺序如何,都是当前最大的元素优先出队;
最小优先队列 ,无论入队顺序如何,都是当前最小的元素优先出队。

二叉堆节点的“上浮”和“下沉”的时间复杂度都是O(logn),所以优先队列入队和出队的时间复杂度也是O(logn)。

https://blog.csdn.net/qq_28958301/article/details/91590545

6. 什么叫算法

算法,对应的英文单词是algorithm,这是一个很古老的概念,最早来自数学领域,是用于解决某一类问题的公式和思想。

计算机科学领域的算法,本质是一系列程序指令,用于解答特定的运算和逻辑问题。一般运用时间复杂度和空间复杂度来衡量算法好坏。

算法的应用领域多种多样:

  • 运算,例如计算两个数的最大公约数。

  • 查找,例如使用谷歌、网络搜索某一关键词得出数据和信息。

  • 排序:例如浏览电商网站时,商品按价格从低到高进行排序。

  • 最优决策:例如游戏中让AI角色找到迷宫的最佳路线。

参考资料:魏梦舒(@程序员小灰),《漫画算法:小灰的算法之旅》:电子工业出版社,2019-05

热点内容
梦世界国际版服务器ip 发布:2025-05-10 20:35:35 浏览:256
编程树遍历 发布:2025-05-10 20:34:53 浏览:401
快牙怎么传文件夹 发布:2025-05-10 20:29:08 浏览:137
26个字母可以组成多少个密码 发布:2025-05-10 20:23:21 浏览:619
redhat启动ftp服务 发布:2025-05-10 20:19:19 浏览:864
初级编程视频教程 发布:2025-05-10 20:19:17 浏览:979
云服务器设计制作 发布:2025-05-10 20:06:53 浏览:669
access数据库实用教程 发布:2025-05-10 20:06:06 浏览:342
谷歌怎么收安卓专利 发布:2025-05-10 20:00:55 浏览:450
am27系列存储器 发布:2025-05-10 19:45:48 浏览:669