![](https://img-blog.csdnimg.cn/20191104100753867.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
如果说程序代码是骨架,那么数据结构与算法则是灵魂!
宜春
回想自己这小半辈子,自认为自己表面见多识广,背后连小猪佩奇都没看过,知道是只小猪,红色的。我现在很惆怅,我已经看清了现实以及未来,不瞒你说,有时候真羡慕那些有故事的人,身居繁华都市,闲闷之日“驾鹤西游”,心静之时心里怀有远方,不像我,走出小小半生也没能牵上女孩子的手,一个“帅”字就能贯穿一生。
展开
-
【数据结构06】二叉平衡树(AVL树)
文章目录一、平衡二叉树定义二、这货还是不是平衡二叉树?三、如何保持平衡二叉树平衡?一、平衡二叉树定义平衡二叉树又称AVL树。它可以是一颗空树,或者具有以下性质的二叉排序树:它的左子树和右子树的高度之差(平衡因子)的绝对值不超过1且它的左子树和右子树都是一颗平衡二叉树。从上面简单的定义我们可以得出几个重要的信息:平衡二叉树又称AVL树平衡二叉树必须是二叉排序树每个节点的左子树和右子...原创 2019-12-15 15:42:37 · 3973 阅读 · 2 评论 -
【数据结构05】红-黑树基础----二叉搜索树(Binary Search Tree)
至于博主为何要花一整篇文章来讲这个二叉搜索树呢?原因很简单,红-黑树是基于二叉搜索树的,如果对二叉搜索树不了解,那还谈何红-黑树?红-黑树的重要性我想各位没吃过佩奇肉也肯定看过宜春跑....首先要明确的是二叉搜索树又称二叉排序树、二叉查找树,简统称BST。在正式将二叉搜索树之前,宜春还是想先谈谈人生谈谈生活从而切入二叉搜索树。一天,程序员老方给宜春打电话:靓仔,我今天下单了一双皮鞋,老靓了,价格不菲啊!宜春:得了吧你,啥条件啊我还不知道,还皮鞋,老鼠皮的鞋吧,如果是真牛皮的皮鞋我把它吃喽!!!原创 2019-12-13 10:42:10 · 2273 阅读 · 0 评论 -
动画 | 大学四年结束之前必须透彻的排序算法
现如今大学生学习排序算法,除了学习它的算法原理、代码实现之外,作为一个大学生更重要的往往是要学会如何评价、分析一个排序算法。排序对于任何一个程序员来说,可能都不会陌生。大部分编程语言中,也都提供了排序函数。在平常的项目中,我们也经常会用到排序。排序非常重要!本章主要从如何分析一个算法开始入手,从而循进渐进的分析那些大学四年结束之前必须掌握的排序算法!文章目录如何分析一个“排序算法”?1、排序算法...原创 2019-11-12 08:36:37 · 2738 阅读 · 14 评论 -
【算法04】树与二叉树(递归思想遍历)
前面我们讲的都是线性表结构,栈、队列等等。今天我们讲一种非线性表结构,树。树这种数据结构比线性表的数据结构要复杂得多,内容也比较多,首先我们先从树(Tree)开始讲起。树(Tree)树型结构是一种非线性结构,它的数据元素之间呈现分支、分层的特点。1.树的定义树(Tree)是由n(n≥0)个结点构成的有限集合T,当n=0时T称为空树;否则,在任一非空树T中:(1)有且仅有一个特定的...原创 2019-09-08 17:30:46 · 5785 阅读 · 1 评论 -
如何正确学习数据结构、算法这门课?
你是否曾跟我一样,因为看不懂数据结构和算法,而一度怀疑是自己太笨?实际上,很多人在第一次接触这门课时,都会有这种感觉,觉得数据结构和算法很抽象,晦涩难懂,宛如天书。正是这个原因,让很多初学者对这门课望而却步。我个人觉得,其实真正的原因是你没有找到好的学习方法,没有抓住学习的重点。实际上,数据结构和算法的东西并不多,常用的、基础的知识点更是屈指可数。只要掌握了正确的学习方法,学起来并没有看上去那...原创 2019-11-14 10:26:29 · 14260 阅读 · 7 评论 -
如何教会女友递归算法?
一到周末就开始放荡自我,这不带着女朋友去万达电影院看电影(其实是由于整天呆在家敲代码硬是被女朋友强行拖拽去看电影,作为一个有理想的程序员,我想各位应该都能体谅我),一到电影院,女朋友说要买爆米花和可乐,我当时二话没说,臣本布衣躬耕于南阳,壤中羞涩,所以单买了爆米花,买完都不带回头看老板的那种,饮料喝多了不好,出门的时候我带了白开水,还得亏我长得销魂,乍一看就能看出是个社会精神小伙,女朋友...原创 2019-09-04 11:45:39 · 4794 阅读 · 11 评论 -
【从今天开始好好学数据结构03】链表
今天我们来聊聊“链表(Linked list)”这个数据结构,相比数组,链表是一种稍微复杂一点的数据结构。对于初学者来说,掌握起来也要比数组稍难一些。这两个非常基础、非常常用的数据结构,我们常常将会放到一块儿来比较。所以我们先来看,这两者有什么区别。数组需要一块连续的内存空间来存储,对内存的要求比较高。而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,链表...原创 2019-09-03 20:01:16 · 4614 阅读 · 2 评论 -
【数据结构02】栈与队列
我们今天要讲的“栈”以及队列这两种数据结构。回顾一下上一章中【数据结构01】数组中,在数组中只要知道数据的下标,便可通过顺序搜索很快查询到数据,可以根据下标不同自由查找,然而今天要讲的“栈”以及队列这两种数据结构访问是受限制的,只允许在一端读取、插入和删除数据,这时候对它存在的意义产生了很大的疑惑。因为会觉得,相比数组和链表,栈带给我的只有限制,并没有任何优势。那我直接使用数组或者链表不就好了吗...原创 2019-09-03 16:41:19 · 4757 阅读 · 1 评论 -
是时候觉悟了!一篇文章让你明白数据结构与算法分析有多重要
不得不说,现在很多大厂,比如Google、Facebook、BAT,面试的时候都喜欢考算法、让人现场写代码。经常有人说,程序员35岁之后很容易陷入瓶颈,被行业淘汰,我觉得原因其实就在此。写代码的时候,从来都不考虑非功能性的需求,只是完成功能,凑合能用就好;做事情的时候,也从来没有长远规划,只把眼前事情做好就满足。虽然技术不错,但每次去面试都会“跪”在算法上,很是可惜。那你有没有真正地想过...原创 2019-08-22 12:08:49 · 7273 阅读 · 3 评论 -
【从今天开始好好学数据结构01】数组
面试的时候,常常会问数组和链表的区别,很多人都回答说,“链表适合插入、删除,时间复杂度O(1);数组适合查找,查找时间复杂度为O(1)”。实际上,这种表述是不准确的。数组是适合查找操作,但是查找的时间复杂度并不为O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是O(logn)。所以,正确的表述应该是,数组支持随机访问,根据下标随机访问的时间复杂度为O(1)。每一种编程语言中,基本都会有数...原创 2019-08-23 11:52:13 · 5401 阅读 · 1 评论 -
时间空间复杂度分析:如何分析、统计算法的执行效率和资源消耗
文章目录为什么需要复杂度分析?1. 测试结果非常依赖测试环境2.测试结果受数据规模的影响很大大O复杂度表示法时间复杂度分析1.只关注循环执行次数最多的一段代码2.加法法则:总复杂度等于量级最大的那段代码的复杂度3.乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积几种常见时间复杂度实例分析1. 必须明确一个概念:常量级时间复杂度的一种表示方法O(1)2.对数阶时间复杂度 O(logn)、O(n...原创 2019-08-23 10:59:55 · 6779 阅读 · 7 评论