@coder-pig
2019-05-31T13:42:56.000000Z
字数 2718
阅读 1726
数据结构
没更新博客两个星期了,大家有想我吗?
哈哈,自恋了一把哈,我又回来写东西了,是大家所期待的Android进阶教程来了么?
然而并不是哈~首先是小猪的逼格还不够,很多东西都还不会,或者说不是太熟悉,
这样写出来的东西肯定是误人子弟哈!而且依旧是项目经验不够哈,说下最近都在干嘛吧~
把《Android群英传》撸了一遍,然后昨天花了一下午撸了十三章《Android源码设计模式》,
然后往项目里加上一两个设计模式。大概什么原理知道,但加到项目里却不容易~
归根结底还是代码写得少...
嗯,把话题转回来,接下来的话,可能花2个月左右的时间撸一套数据结构的辅助教程...问:你要写数据结构?数据结构?数据结构?的教程?
答:对的,我要写一套数据结构的辅助教程,是辅助教程,而非教材!辅助教程就是...问:不好好写Android进阶教程,写数据结构搞毛?数据结构能干嘛?咦,数据结构是什么鬼?
好像听过,对对对,大学好像有过这门课程,但是考完试就全忘了。不过出来工作这么久,
好像根本没有用到过这个东西吧?
答:对的,数据结构和算法基本上是软件工程专业的必修课,想当年小猪上数据结构的课
基本都是睡过去的...然后临考试前临急抱下佛脚,61分勉勉强强考过哈,考完什么都不知了!
大部分的朋友都感觉数据结构很难,很复杂,一提到数据结构就头痛...但是数据结构又非常重要,
但是去一些大的公司面试很多时候都会问到数据结构的问题,二叉树,红黑树等...卧槽,什么鬼...
尽管这门课程并不好学,但是假如想让自己的编程能力有质的飞跃,不在停留于调用现成的API,
而是追求更完美的实现,那么数据结构是你的必修课...问:你BB了那么久,能够举些例子来说明下数据结构和算法的重要性?
答:可以,不过别打断我了...首先说下算法吧,算法可以理解为解决某个特定问题的方法吧,
一个问题可能有不同的解决方法,也可以说有不同的算法,而算法肯定是有优劣的,比如,让你计算:
1 + 2 + 3 + ... + 100,你会怎么做?算法1:定义100个变量,分别赋1-100的值,然后一个个加起来...
思考:100个变量还好,假如1+...+1000呢?这代码量无法直视,我们肯定要想想其他的算法!算法2:用一个for循环,循环100次,将和加上新的值:
for(int i = 1;i<=100;i++)sum += i;return sum;
思考:代码写少很多了,但是假如是加到一千万呢?循环一千万次么?我们还是得想想其他算法!算法3:数学家高斯(不是超人高斯...)提出的:等差数列求和的算法
公式:和 = (第一项 + 最后一项) * 项数 / 2
把1和100代入得:sum = (1 + 100) * 100 / 2 = 5050,得出的就是结果,
而此时即使我们从1加到1千万,也只是走一步,由此看出算法的重要性了吧!那么为什么一般我们都喜欢叫:数据结构和算法呢?数据结构和算法有什么关系么?
答:程序 = 数据结构 + 算法,数据结构和算法一样都是一种编程的思想,数据结构,
就是数据的结构啊,分析问题,从中提取出我们的操作对象,并且找出这些操作对象间
包含的关系等,就得出了我们所谓的数据结构,有点像我们面向对象中的抽象!
好吧,小结下,数据结构就是:采取何种结构对数据进行管理!
而算法无不依赖于具体的数据结构,数据结构直接关系到算法的选择以及效率!Android中也少不了数据结构的影子,还记得我们的Activity栈么?还有Handler中的
MessageQueue(消息队列)么?
问:...
答:还想停!好的,说这么多就是想表达数据结构很重要,学了并不会没什么
卵用而已!下面细说下本教程的目标以及学习的一些要求,还有一些学习资料以及
网站的介绍!
答:面试给人上了一课,突然感觉数据结构很重要;还有,帮助后来者,刚接触数据结构的
童鞋们一点点方向,不至于学完什么都不知道!大部分学校采用的教程应该是严蔚敏老师的
《数据结构(C语言版)》吧,而讲数据结构课程的一般也是老教授吧,这也是为何上数据结构
课会昏昏欲睡的大部分原因,写这套教程的目标就是想让大家有目的性地去学数据结构!
不至于学完什么都不会,当然也会挑1,2个经典的例子进行讲解!别把这个当教程,你可以
把本套教程理解成《数据结构的食用说明书》,这里没有形象生动的例子,只有精致的学习
路线图和简单的代码实现以及详细的注释!建议还是入手基本数据结构相关的数据或者视频吧!
2.推荐一波数据的书和视频,以及网站
书籍:
《数据结构(C语言)》 严蔚敏,经典教材不解释
《数据结构算法解析》高一凡,代码实现不解释
《数据结构与算法分析:C语言概述(原书第2版)》一本入门级的好书
《大话数据结构》程杰 结合生活知识来类比,图多,内容蛮有趣的,同样是一本入门好书视频:
《[郝斌]数据结构自学视频》 蛮不错的一套视频教程
《[小甲鱼]数据结构和算法》 非常赞的视频,视频通俗易懂,也是本套教程主要的参考对象!网站:
数据结构在线演示神器:http://visualgo.net/
3.学习的目标,或者说想达到的程度
首先,我们不是ACMER,也不是专门搞算法的,我们学习数据结构只是为了拓展我们的见识,
或者说提高我们的编程思想,当然看玩本套教程,你有兴趣也可以继续深入学算法,而这是本套
教程外的事了,这里只教你最基本的思想,扩展还是靠你们自己!
接着,我们想学完以后,当提起链表或者二叉树之类的,你能够大概感觉到这种数据结构
是什么样子的,或者能画出个大概!知道什么时候该用什么样的数据结构和算法,当然后面这
一点是要慢慢积累的!
4.如何学习数据结构
理解 - 画图 - 代数据 - 思考 - 堆码 - 思考
上面是我的一些套路,当然你也可以有自己的套路,看不懂,敲,还是看不懂,继续敲,代数据,
一步步跟代码,画图,等等!另外网上别人写好的代码不是你的哦,敲完理解了,才算是你的,
过几天又把同样的问题拿出来,你还记的逻辑或者代码实现吗?
5.本教程读者对象
刚学数据结构而又找不到方向的童鞋;
对数据结构有兴趣的朋友;
面试数据结构被问问口哑哑的朋友...等等!
小猪毕竟不是以为专业的算法选手,写本套教程的原因也说了,自己想过一遍数据结构
又想为后来者做一点记录;假如教程中有写错或者纰漏的地方,望读者海涵,也希望读者
朋友能将发现的问题及时向我反馈,感激不尽!谢谢~
又想交流或者学习的朋友可加群:【小猪数据结构交流群】
小猪是菜猪,求算法大神们别调戏~只是有一颗分享的心罢了,当然也欢迎大牛进群指点~
至于教程看具体情况,正常情况一周会更新2-3篇!当然重心还是会放在Android上的~
嗯,就说这么多,谢谢~