数据结构之绪论

这是数据结构系列文章的第一篇,这是文章的列表
注:想要学好数据结构,掌握至少一门语言是必需的,这样才能将学到的数据结构知识加以巩固。

文章目录

  1. 语言以及代码书写规范
  2. 时间复杂度和空间复杂度分析
  3. 数据结构与算法中的一些概念

1. 语言以及代码书写规范

  1. 语言其实无所谓,重点在于数据结构的知识。不同语言实现的数据结构算法,其实大同小异。在教科书中,常用的语言有C/C++ 和 java两种。
  1. 这两种语言在在数据结构与算法上,转化起来其实很简单,所以以后的文章,可能会用到这两种语言。
  2. 代码书写规范:
    • 程序中用到的某些常量或者调用的函数等可以用加注释的方式,省略其定义。
    • include语句可不写
    • 测试代码可不写
    • 数据类型上,int, char及其数组类型,指针类型即可覆盖大部分

2. 时间复杂度和空间复杂度分析

  • 其实对于一些简单的程序,时间复杂度和空间复杂度是比较简单的,但是也有难的地方,特别是算法中涉及到递归等比较高级的特性时。时间复杂度的考察较多
  • 在考研中,时间复杂度的考察一般是考察排序算法中的复杂度,这只需要简单记忆或者理解记忆即可。当然,也不仅仅是这样的,也会给你一段程序,要你分析其复杂度,这就需要你有一定的分析能力了。
(1) 时间复杂度
1) 常用的时间复杂度比较关系(需要牢记):
时间复杂度的比较关系.png
2) 实例分析
  • 分析时间复杂度其实就是分析算法每个指令执行的次数。而一般一行一行的代码其实其执行次数为常数,一般不考虑,所以一般要分析的地方在循环、递归等地方。
  • 计算出执行次数后,一般是一个n的表达式,只需要提取式子中随着n的变化而变化最快的那个部分,一般是在(1)中比较关系里的那些。
实例1:纯循环的情况

这种情况只需要简单计算循环内的指令执行次数就行了。

实例1.png

以上代码第一层是n次循环,第二层是n - (i + 1) + 1 = n - i次循环,而i是从0开始到n - 1, 所以总的次数应该是:

i = 0 时, target 运行 n - 1 次
i = 1 时, target 运行 n - 2 次
...
i = n - 1 时,target 运行 0 次
所以总共次数 = (n - 1) + (n - 2) + (n - 3) + ... + 0 
总共有n项,根据等差数列求和:sum = ((n-1) + 0) * n/ 2 = n(n-1) / 2
实例2:循环次数依赖循环内数据变化的情况

有些题目中,循环的次数要依赖循环内部变量的变化情况而定。

image.png

上述代码只有一个while循环,但是循环次数需要通过i和s计算, 1,2两条指令会影响循环的跳出。并不是简单的自增1。

初始:i = 0, s = 0
i = 1, s += i = 1 // 1次
i = 2, s += i = 1 + 2 = 3 // 2次
i = 3, s += i = 1 + 2 + 3  = 6  // 3次
...
i = m, s += m = 1 + 2 + 3 + ... + m = m(m+1)/2   // m次

假设循环m次结束,那么 s = m(m+1)/2  >= n
换一种表示方式:m(m+1)/2 + k = n, k为一个常数
则有:m*m + m + 2k -2n = 0

image.png

按照前面所说取影响最大的一项做简化的规则,时间复杂度为:

image.png
实例3:递归的情况
image.png

递归的情况分析会比较难,但是也有一般的套路。上面的代码是归并排序的关键代码。merge函数的复杂度为O(n)

-> 设因为merge的复杂度为O(n),所以可以假设其操作次数为cn,再假设mergesort的操作次数为f(n).
-> 实例中的规模为:j - i + 1,若调用mergesort(1, n), 那么规模就是n。
-> 一个规模为n的mergesort指令 = 两个规模为n/2的mergesort指令 + cn
即:
image.png

假设最后的问题

(2) 空间复杂度

3. 数据结构与算法中的一些概念

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

推荐阅读更多精彩内容