为什么一定要学算法?

算法,先于计算机存在于世,比编程语言本身更为重要,语言只是工具,而算法才是灵魂。---云风《游戏之旅-我的编程感悟》第二章(4m8h)

1、算法评估

    1.空间复杂度

    2.时间复杂度

    3.对基本操作的评估(一次加减乘除或内存访问,函数调用,都可以算作一次基本操作)

通常用大O表示法(big-Oh notation)来表示问题的复杂度,它表达的是问题的计算量的层次,O即Order的缩写,O(n^2)表示基本操作使用的次数和问题的规模成平方的关系。

常见的层次按一下表递增:

复杂度

2、数据结构

程序是由算法和数据结构组成的,要想学算法,也要学会如何去组织数据,处理数据。

    1.线性表

    a.数组和链表

数组:指屋里地址连续的表,可以用内存地址来检索到对应的元素,可以用常数时间访问到指定2位置的元素,但是在中间插入和删除元素的时间复杂度为线性的

链表:每个元素的物理位置是任意的,通过指针串接起来,它访问的时间非常长,但是插入和删除的速度却很快,由于需要额外的空间记录元素的前后关系,占用内存也大于数组

    b.堆栈、队列和串

堆栈和队列是两种特殊的线形表。

堆栈:只能从一头进出,先进入的数据后出来,广泛用于类C语言的函数调用机制。做深度优先搜索求解问题时也需要它。

队列:和堆栈相反,采用先进先出,让数据从线性表的一头进入,从另一头出去,用来保持元素的先后顺序,被广泛用在消息通讯中,也可以用于广度搜索的算法。

优先队列:每个元素都有一个优先级,出队列的时候,永远是优先级最小的元素优先,通常不是由线性表来实现。

c.树、二叉树及其他

树:对有层次的数据集的一种组织方式,树中每个数据节点都有或没有它所下属的数据集,除了根节点是整棵树的根源外,每个数据节点都有唯一的父亲。

二叉树:二叉树的子树有明确的左右之分,让左子树指向自己的一个儿子,让右子树指向自己的下一个兄弟。在表达式计算和数据压缩,以及排序查找方面都有很多的用途。

四叉树及八叉树:四叉树用于平面划分,八叉树用于三维空间,这里所说的空间,不仅仅局限于游戏里的场景空间。

图:图中每个节点并没有父子关系,图纯粹是点和边的集合,节点和节点之间允许加上一些与它相关的数,称为权,带权的图一般叫做网络,节点和节点之间可以是无方向的连接,也可以是有向连接。

d.映射表

key和内容对应起来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,068评论 0 12
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,422评论 1 31
  • 四. 走向世界之巅——快速排序 你可能会以为归并排序是最强的算法了,其实不然。回想一下,归并的时间效率虽然高,但空...
    Leesper阅读 1,597评论 9 7
  • 问题:为什么需要尊重到每个细节? 我以前一直不太能理解,为什么书里描写的那些如此能力超群的人,会如此刻意的尊重每一...
    维京阅读 165评论 0 1