![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 77
技术博客汇总888
学而不思则罔,思而不学则殆...
展开
-
图解数据结构(1)——大圈表示法、动态数组和单向链表
《数据结构》这门课是计算机专业的核心课程,但往往却让人头痛,因为比较抽象,当然了,也许你足够聪明,并不觉得它有多难,但对我而言,是有点难度,后来我仔细想了想,到底哪里难?我得出这么个结论:长篇大论,缺乏图表。现在的人都喜欢看电影,看电视剧,很少人还热衷于看小说吧,密密麻麻的文字不如一些图来得直观。另外,我们大多数人是做应用的,不是做研究的,所以我们只需要知道2+3=5,而不需要知道a+b=转载 2013-10-17 09:56:51 · 911 阅读 · 0 评论 -
图解数据结构(9)——左偏树
树这个数据结构内容真的很多,上一节所讲的二叉堆,其实就是一颗二叉树,这次讲的左偏树(又叫“左翼堆”),也是树。二叉堆是个很不错的数据结构,因为它非常便于理解,而且仅仅用了一个数组,不会造成额外空间的浪费,但它有个缺点,那就是很难合并两个二叉堆,对于“合并”,“拆分”这种操作,我觉得最方面的还是依靠指针,改变一下指针的值就可以实现,要是涉及到元素的移动,那就复杂一些了。左偏树跟二叉堆转载 2013-10-17 09:40:48 · 692 阅读 · 0 评论 -
数据结构中的各种排序方法-JS实现
新技术一直在不断变化,掌握一些基础是未来学习不断更新的技术的坚实基础。近来闲来无事,为了温习一下从前学的数据结构,将数据结构中的排序算法用JS实现了一遍,并在本文末尾处嵌入了DEMO。 简单排序冒泡排序 冒泡排序是最简单排序算法,时间复杂度为n的平方,代码如下: function bubbleSort(array) {转载 2013-10-16 13:43:30 · 920 阅读 · 0 评论 -
图解数据结构(8)——二叉堆
二叉堆(Binary Heap)经历了上一篇实现AVL树的繁琐,这篇就显得非常easy了。首先说说数据结构概念——堆(Heap),其实也没什么大不了,简单地说就是一种有序队列而已,普通的队列是先入先出,而二叉堆是:最小先出。这不是很简单么?如果这个队列是用数组实现的话那用打擂台的方式从头到尾找一遍,把最小的拿出来不就行了?行啊,可是出队的操作是很频繁的,而每次都得打一遍擂台转载 2013-10-17 09:43:20 · 685 阅读 · 0 评论 -
图解数据结构(7)——二叉查找树及平衡二叉查找树
这篇将是最有难度和挑战性的一篇,做好心理准备!十、二叉查找树(BST)前一篇介绍了树,却未介绍树有什么用。但就算我不说,你也能想得到,看我们Windows的目录结构,其实就是树形的,一个典型的分类应用。当然除了分类,树还有别的作用,我们可以利用树建立一个非常便于查找取值又非常便于插入删除的数据结构,这就是马上要提到的二叉查找树(Binary Search Tree),这种二叉树有个转载 2013-10-17 09:46:30 · 760 阅读 · 0 评论 -
图解数据结构(6)——树及树的遍历
树(Tree)树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方式,可见树用来描述包含关系是很不错的,但这种包含关系不得出现交叉重叠区域,否则就不能用树描述了,看图:面试的时候我们经转载 2013-10-17 09:49:36 · 1113 阅读 · 0 评论 -
图解数据结构(5)——散列法及哈希表
哈希表(Hash Table)及散列法(Hashing)数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法——拉链法,我们可以理解为“链表的数组”,如图:左边很明显是个数组,转载 2013-10-17 09:51:23 · 864 阅读 · 0 评论 -
图解数据结构(4)——二分法查找法
二分法查找(Binary Search)如何从数组里找一个元素的位置?如果排列是无序的,我们只能从头到尾找,但如果排列是有序的,我们则可以用别的更好的方法,二分查找法就类似我们在英汉词典里找一个单词的方法。如下图所示(假如我们要查找的数字是“88”):下面我给出了一段demo代码,来演示二分查找法比顺序查找快多少,代码为了方便起见,初始化有序表的时候填入的数字都是均匀的,而事实转载 2013-10-17 09:52:25 · 1756 阅读 · 0 评论 -
图解数据结构(3)——队
队(Queue)前一篇讲了栈(Stack),队和栈其实只有一个差别,栈是先进后出,队是先进先出,如图:从图中可以看出,队有两个常用的方法,Enqueue和Dequeue,顾名思义,就是进队和出队了。队和栈一样,既可以用数组实现,也可以用链表实现,我还是偏向于用数组,我的实现示意图如下:队有啥用呢?一个最常用的用途就是“buffer”,即缓冲区,比如有一批从网络来的数转载 2013-10-17 09:53:49 · 686 阅读 · 0 评论 -
图解数据结构(2)——栈
栈(Stack)前一篇讲解了最基本的东西,这篇就稍微前进一点点,讲一下栈,栈在英文中叫Stack,翻译成中文又叫“堆栈”,但决不能称为“堆”,这个要搞清楚,我们说的“栈”和“堆栈”指的都是Stack这种数据结构,但“堆”却是另外一个概念了,这里且不提。栈最大特点是先进后出,如图:可以看出,栈有几个最常见的方法,或者说必备的方法,Push,Pop和Top,即进栈,出栈和取转载 2013-10-17 09:55:14 · 830 阅读 · 0 评论 -
图解数据结构(10)——排序
这可能是最有趣的一节。排序的考题,在各大公司的笔试里最喜欢出了,但我看多数考得都很简单,通常懂得冒泡排序就差不多了,确实,我在刚学数据机构时候,觉得冒泡排序真的很“精妙”,我怎么就想不出呢?呵呵,其实冒泡通常是效率最差的排序算法,差多少?请看本文,你一定不会后悔的。1、冒泡排序(Bubbler Sort)前面刚说了冒泡排序的坏话,但冒泡排序也有其优点,那就是好理解,稳定,再就是空间转载 2013-10-17 09:31:45 · 673 阅读 · 0 评论