从零开始学算法:8. 召唤神龙
作者:
| 更新日期:人人都需要有逻辑能力,人人都需要有分析能力。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
这篇文章你看不懂。
一、背景
大家好,我是tiankonguse。
由于某些原因,经常有人想学习算法但之前又没有相关经验,不知道从何做起。
我思考了许久,计划写一个系列来分享如何入门学习算法。
之前已经分享了认识算法》、《了解套路长啥样》、《排序算法》、《二分查找》、《万能数组》、《链表》、《跳表》七篇文章,这是第八篇,也是从零开始学算法专题的最后一篇《召唤神龙》。
一、基础知识
不知你是否还记得, 3月14日,我发表了这个专题的第一篇文章《认识算法》。
其中提到了计算机和程序语言的两个特点:
特点1:计算机是万能的,她可以做到你告诉她的任何事情。
特点2:计算机是低能的,你必须按照计算机的规则并清清楚楚的告诉她如何一步步做。
你想控制万能的计算机,你需要有强大的思维能力、逻辑能力、分析能力。
你想控制低能的计算机,你需要有细心、耐心、良好的代码规范、统一代码风格。
是的,当你有强大的思维能力、逻辑能力、分析能力时,再加上细心、耐心、良好的代码规范,任何算法与数据结构,在你面前都可以变得那么渺小。
谈笑间,你就可以看出其本质;
弹指间,你就可以实现其代码。
但是,要做到这些都不容易,一切都需要多思考、多练习。
二、回顾
这个系列分享了七篇文章,类型各不相同,目的也不尽相同。
第一篇是让你认识算法与数据结构,通过输入和输出锻炼其耐心,学会细心,并告诉你分析能力很重要。
第二篇想要告诉你这个世界很大,每种问题根据自身的特点,有其对应的结局方案。
我们要做的就是学会基本的知识,提高思维能力分析能力,遇到新问题时使用自己的分析问题能力来想出一个可行的办法,并解决问题。
第三篇文章介绍了入门级的排序,想要告诉你同一个问题,有很多种方法的,关键在于我们的思维是怎么样的。
这样看,可以冒泡、那样看可以选择或插入。
而对于归并、快排或堆排序,则告诉你如果你的认知有限,这些方法是根本不可能想出来的。
怎么提高问题,多去交流,去解决各种问题,随着升级打怪我们的认知也就提高了,很多在其他地方的思想就会讨论在这里了。
第四篇二分查找则说明,表面上明明是一个问题,仔细一看,确实一堆问题。
我们需要细心,需要有清晰的思路,有明确的定义,此时,问题不管怎么千变万化,在我们看来都是一个问题。
这是看到的一个问题与初学者看到的一个问题完全不是一个概念了。
第五篇万能数组,重点在于数据结构了。
使用相同的数据结构,我们可以做不同的事情,但是对应的成本也是不一样的。
第六篇链表,主要表达了这个世界并不想我们看到的那样:连续、清晰、明确。
我们只能看到眼前的一步,至于再往后的一步路,很多人就看不清了。
我们需要看清其本质,抓住其位置,才能精确的找到后面的一步步路。
第七篇跳表和之前完全不一样了,错综复杂的世界展现在我们面前,大家都看花了眼。
此时只有清晰的大脑,正确的逻辑,才能看清这一切背后的本质。
原来跳表就是一个多叉树,可以用来做任何事情。
不仅仅支持有序,还可以乱序,还可以动态的调整树的高度,从而使得这个多叉树保持平衡。
不过世界这么复杂,没人看到这一步,时代在发展,这一步迟早会到来,并被人们接受。
三、征途
算法与数据结构其实就是一种数理逻辑,定义一些名词与规则,通过运行规则得出结果。
对于数理逻辑,天生就长了一副抽象的脸,大部分人看不清里,总是迷迷糊糊的。
根据这些数理逻辑的类型,进行了分类划分,比如基础类型、图论、数学、字符串、博弈等。
这些类型由于是强行划分的,有时候属于多个分类也属正常。
刚开始,你只能从简单的基础类型来认识它们,也就是这个主题《从零开始学算法》。
在这里面有哪些算法或数据结构不重要,重要的是要锻炼自己的逻辑能力、分析能力。
后面的路肯定还很远,短视的我只计划了下一个系列,是树相关的内容,需要有更强的逻辑能力你才能看懂。
四、最后
人人都需要有逻辑能力,人人都需要有分析能力。
这样面对任何事情,都会很从容的去面对,然后按照自己的理解去做出最正确的选择。
人人都喜欢听故事,故事听多了,人就慢慢没有逻辑了,不会分析了,总是被故事引导,以故事的结论当做自己的结论,这样是很可怕的。 怎么办,学习算法可以稍微提高一点自己的逻辑能力、分析能力。
本文首发于公众号:天空的代码世界,微信号:tiankonguse-code。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。