您的位置:首页 > 理论基础 > 数据结构算法

小猪的数据结构辅助教程——前言

2015-12-08 21:22 489 查看

小猪的数据结构辅助教程——前言

标签(空格分隔): 数据结构

开始之前

没更新博客两个星期了,大家有想我吗?



哈哈,自恋了一把哈,我又回来写东西了,是大家所期待的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(消息队列)么?



:…

:还想停!好的,说这么多就是想表达数据结构很重要,学了并不会没什么

卵用而已!下面细说下本教程的目标以及学习的一些要求,还有一些学习资料以及

网站的介绍!

本教程的点点

1.为什么要写这套教程?

答:面试给人上了一课,突然感觉数据结构很重要;还有,帮助后来者,刚接触数据结构的

童鞋们一点点方向,不至于学完什么都不知道!大部分学校采用的教程应该是严蔚敏老师的

《数据结构(C语言版)》吧,而讲数据结构课程的一般也是老教授吧,这也是为何上数据结构

课会昏昏欲睡的大部分原因,写这套教程的目标就是想让大家有目的性地去学数据结构!

不至于学完什么都不会,当然也会挑1,2个经典的例子进行讲解!别把这个当教程,你可以

把本套教程理解成《数据结构的食用说明书》,这里没有形象生动的例子,只有精致的学习

路线图和简单的代码实现以及详细的注释!建议还是入手基本数据结构相关的数据或者视频吧!

2.推荐一波数据的书和视频,以及网站

PS:时间关系,就不贴下载链接了,这些东西网上一堆哈~

书籍

《数据结构(C语言)》 严蔚敏,经典教材不解释

《数据结构算法解析》高一凡,代码实现不解释

《数据结构与算法分析:C语言概述(原书第2版)》一本入门级的好书

《大话数据结构》程杰 结合生活知识来类比,图多,内容蛮有趣的,同样是一本入门好书

视频

《[郝斌]数据结构自学视频》 蛮不错的一套视频教程

《[小甲鱼]数据结构和算法》 非常赞的视频,视频通俗易懂,也是本套教程主要的参考对象!

网站

数据结构在线演示神器:http://visualgo.net/

3.学习的目标,或者说想达到的程度

首先,我们不是ACMER,也不是专门搞算法的,我们学习数据结构只是为了拓展我们的见识,

或者说提高我们的编程思想,当然看玩本套教程,你有兴趣也可以继续深入学算法,而这是本套

教程外的事了,这里只教你最基本的思想,扩展还是靠你们自己!

接着,我们想学完以后,当提起链表或者二叉树之类的,你能够大概感觉到这种数据结构

是什么样子的,或者能画出个大概!知道什么时候该用什么样的数据结构和算法,当然后面这

一点是要慢慢积累的!

4.如何学习数据结构

理解 - 画图 - 代数据 - 思考 - 堆码 - 思考

上面是我的一些套路,当然你也可以有自己的套路,看不懂,敲,还是看不懂,继续敲,代数据,

一步步跟代码,画图,等等!另外网上别人写好的代码不是你的哦,敲完理解了,才算是你的,

过几天又把同样的问题拿出来,你还记的逻辑或者代码实现吗?

5.本教程读者对象

刚学数据结构而又找不到方向的童鞋;

对数据结构有兴趣的朋友;

面试数据结构被问问口哑哑的朋友…等等!

最后的一些碎碎念

小猪毕竟不是以为专业的算法选手,写本套教程的原因也说了,自己想过一遍数据结构

又想为后来者做一点记录;假如教程中有写错或者纰漏的地方,望读者海涵,也希望读者

朋友能将发现的问题及时向我反馈,感激不尽!谢谢~

又想交流或者学习的朋友可加群:【小猪数据结构交流群】

小猪是菜猪,求算法大神们别调戏~只是有一颗分享的心罢了,当然也欢迎大牛进群指点~

至于教程看具体情况,正常情况一周会更新2-3篇!当然重心还是会放在Android上的~

嗯,就说这么多,谢谢~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: