学习数据结构/算法的一些心得

数据结构是可以被串起来的,每新出现一种新的数据结构或者算法肯定是前面的存在一些不足,新提出的可以对其进行改进,多问自己为什么要有这种数据结构/算法,这样子就有利于将知识点串联起来,知识点不再是孤立地散布在大脑中,调用起来也会更快。

在查找的章节,可以按照如下的知识点串联起来,学起来会更加容易一点。

查找数据结构和算法

首先介绍了顺序表(可以理解为数组)查找,首先从最简单的数据无序可以找起,其复杂度为O(n),显然我们是不满意的,于是我们可以想到将数据进行排序可能会加快查找的速度,接下来是数据有序的情况找起,一共有三种查找的方法,二分法、插值法、Fabonacci法,三种方法大同小异,只不过是每次分开数据的节点不同而已,这时的已经变为时间复杂度为O(lgn),当然我们在一开始的时候要对数据进行排序。这个时候我们还发现一个问题,顺序表查找在删除和插入的时候时间复杂度是O(n)(看见有没有,一路下来都是发现问题,针对问题设计新的方案),于是我们引入了搜索二叉树(BST)。网上搜文的时候发现有人说搜索二叉树是为了加快搜索的速度,那么我就要问他,为什么不用有序排序的顺序表?搜索二叉树数据结构比起一个简单的数组可是要比较复杂,显然搜索二叉树并不是为了加快搜索速度,仅仅为此,我们用有序排序的顺序表查找就可以了。甚至严格来说,搜索二叉树的时间复杂度跟其高度有关,不完全是O(lgn)。搜索二叉树是为了加快顺序表删除和插入操作。引入搜索二叉树后,我们可知,其搜索、插入、删除都与其高度有关,对于满/完全二叉树来说,高度接近lgn,但却存在为单链的情况,这时高度为n,各种操作的复杂度都是O(lgn)。因此我们又引入平衡二叉树,平衡二叉树可以尽量平衡整棵二叉树,注意不是将其弄成满/完全二叉树,那这样子操作起来比较复杂,我们只要求尽量平衡。每次在插入和删除节点的时候,都检查树是否违反了平衡二叉树的定义(平衡因子绝对值小于2),如果是对检测地方进行旋转,于是得到的树整体仍然可以比较平衡,高度比较低。那现在总归可以了吧,各种操作时间复杂度都是O(lgn)。然而在查找的数据多到内存装不下的时候,我们每次判断一个节点就要到硬盘进行读取一次数据,这样子耗时是非常多的,硬盘读取的速度跟内存读取速度相差10^5倍,大概是1天和1秒的区别,因此又有了多路查找树(2-3数、3-3-4树、B树)。多路查找树在每个节点放多个数据,我们可以一次性读取多个,“一棵B个树的阶为1001(即一个节点包含1000个关键字),高度为2,它可以存储超过10亿个关键字......读取两次硬盘即可.......”。

数据结构



总结

如果你已经对查找的各种数据结构建立起了以上的知识结构,那么下次需要遇到查找相关的问题,你的思路收敛起来是比较快的,而不是像一团浆糊,比如问你。

在解决一个新的问题,我们首先对其进行简化后模式识别,看该问题跟其他已经遇到的问题,学过的知识点是否有共通之处,如果有我们便能够对其比较快地进行解决。(如果没有,那就真的靠的是智商了,不过大部分情况下,我们还是在脑子搜索是否遇到类似的问题)而识别的快慢,能否识别起来,靠的是我们的学习能力,学习的时候你是否有将这些知识点进行归纳整理。所以大部分情况下,想问题想的慢可能要归咎于学习能力的问题。

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

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,073评论 0 12
  • 1. 链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,...
    Mr希灵阅读 1,430评论 0 20
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,735评论 0 19
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,149评论 0 25
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 9,108评论 0 7