什么是算法,什么是数据结构

  尽管已经学了几年,对它们也可以说大致懂得。但是,作为非计算机专业的人员,还是不会比计算机专业人员懂得多。既然没有受过专门的学习训练,自然会有三天打鱼两天晒网的感觉,一天可能冒出一个念头。于是乎,写写现在的念头,一点也没有直接抄袭其他地方的资料,还是用自家的话说比较让自己懂!可能有错,但是不要怕,先错着,以后理解透了自然会在意识上修正。

  因为上次选修过算法与数据结构,受到课名的影响,虽然教材是《数据结构教程》,但总是以为自己学的是算法。实际上,自己在学习数据结构。

〇、引言

  用一个比喻描述。图书馆里的书好比数据,图书的摆放好比数据结构。要更好地管理图书就必须更好地摆放图书!比如,我可能这么摆放:

方案1:

  所有的书架上放在一个大房间中,依次摆放:古典文学,西方文学,中国文学,历年诺贝尔文学,天文学,地理学,中国历史,外国历史,信息,自动化,通信,电子电气...依次列举,这里还假设各个书架上的书不会有相同的,它们是并列关系,虽然有些牵强。(数组)

      如果我要找一本《围城》,那么我先到第一个书架上看看有没有这本书,发现没有又到下一个书架看,直到找到这本书。(搜索,线性搜索)

方案2:

  我先将大房子分成两个房间,分别称为社会科学图书,自然科学图书。然后两个房间又各自分为:历史、地理、政治;理科,工科。依次按照类别分。(树,各种树)

  如果我要找本《数据结构教程》,我先悠哉悠哉地走进自然科学图书房间,然后轻轻地抬头,看看房间牌子,进入工科房间。。。依次,很快找到这本书。(树的搜索logn时间复杂度)

  这就是数据结构的神奇。

  那什么是算法?这个只能牵强地接着比喻。我想学武功。我进入武功秘籍的图书房间之后,我抱着一大堆书跑出来。打开一看,有降龙十八掌,九阴真经,九阳神功,易筋经,乾坤大挪移,少林龙爪手,太极拳,醉拳,佛山无影脚,七伤拳。我暂时没想好学什么武功,因为各有厉害的地方,有学的时间长不伤身,有的速成但伤身,有的需要内力,有的速度快杀伤力弱,有的杀伤力强但速度极慢。有的虽然不是最厉害的,但简单易学。

  同样地,算法也有好坏之分:有的不能保证收敛,有的能收敛速度慢。有的虽然速度快,但需要内存大。有的虽然不是局部最优解,但是简单容易,有的是原址的,有的不是原址的。

一、数据结构

类别

栈:

队列:

链表:单链表、双链表

各种树:AVL树、2-3树、B树、红黑树、AA树、treap树、带权平衡树、k近邻树、伸展树、跳表...各种各样的树,很有意思

散列表:链接法、开放寻址法

主要研究下述的操作,希望更少的时间复杂度来操作:

建立

查询

插入

删除

二、算法

举例

最优化理论中各种:

动态规划:

整数规划:

各种非凸算法:遗传算法,蚁群算法,粒子群算法,模拟退火算法

...

研究目标:

希望算法收敛且速度快,全局最优,代码简单易懂,内存更好,原址,鲁棒性好

posted on 2015-08-12 18:00  一动不动的葱头  阅读(557)  评论(0编辑  收藏  举报

导航