
数据结构
文章平均质量分 91
天才小C
从事服务器、交换机行业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法篇 链表
1 什么是链表?数组是需要一块连续的内存,但是链表不需要,它可以通过“指针”把一串零散的内存串联起来使用,链表的常见结构有:单链表,双链表,循环单链表,循环双链表。单双链表实现:https://blog.youkuaiyun.com/weixin_38452632/article/details/102730166循环单双链表实现:https://blog.youkuaiyun.com/weixin_...原创 2019-11-28 18:29:08 · 182 阅读 · 0 评论 -
数据结构与算法篇 数组
1 什么是数组?数组(Array)是一种线性表的数据结构,它是用一组连续的内存空间,来存储一组具有相同类型的数据。内存地址计算公式:a[i]_address = base_address + i * data_type_size (data type size就是数据类型,假如是int类型就4字节)。2 什么是线性表与非线性表?线性表:数据排成一条线一样的结构,最多只有前和后...原创 2019-11-27 19:44:07 · 222 阅读 · 0 评论 -
数据结构与算法篇 之循环单链表与双链表
链表的基础操作,增删查插 感觉最重要的画出来,一步一步的分析,不要凭空想象,不要凭空想象,不要凭空想象 循环单链表:#include <stdio.h>#include <stdlib.h>#define bool int#define false 0#define true 1typedef struct list{ int data; ...原创 2019-10-25 16:33:01 · 238 阅读 · 0 评论 -
数据结构与算法篇 之单链表与双链表
链表的基础操作,增删查插感觉最重要的画出来,一步一步的分析,不要凭空想象,不要凭空想象,不要凭空想象单链表:#include <stdio.h>#include <stdlib.h>#define bool int#define false 0#define true 1typedef struct list{ int data; ...原创 2019-10-24 19:39:38 · 211 阅读 · 0 评论 -
数据结构与算法篇 二叉树(Binary Tree)(二)
今天要讲的是二叉查找树(Binary Search Tree),是一种最常用的二叉搜索树,支持快速查找,删除,插入数据。它是如何实现的呢?,其实它依靠的它的数据结构,在树中的任意一个节点,其左子树的每个节点的值都小于这个节点的值,右子树都大于这个节点的值。接下来我们来看一下二叉树是怎么实现快速查找,删除,添加首先我们来看一下查找是怎么实现的,快速查找是依赖二叉树的这种的特殊的数据结...原创 2018-11-16 22:37:24 · 709 阅读 · 0 评论 -
数据结构与算法篇 二叉树(Binary Tree)(一)
好多天没有写过数据结构和算法了,好了今天抽出点时间二叉树,前面讲到的都是线性表,栈,队列等等。今天讲到的是非线性表结构--树,首先说一下什么是树的概念树的这种数据结果挺像我们现实中的树,这里的每一个元素我们叫做节点,用线把相邻的节点连接起来,然后它们就成了父子关系。A节点是B节点的父节点,B节点是A节点的子节点,BCD三个节点的父节点是同一个节点,所以它们之间称为兄弟节点,我们把...原创 2018-11-14 21:03:31 · 226 阅读 · 0 评论 -
数据结构与算法篇 二分查找
今天来讲一个最容易被理解的查找算法二分查找(Binary Search),也叫做折半查找。玩一个简单的游戏我们就清楚了什么叫二分查找了。就是从0-99中猜一个数,每说出一个值,得到的答案有大于,小于,等于,直到猜中为止只需要7次就可以猜中,当0-999,最多也就是需要10次就可以猜中,二分查找是不是很高效啊,它的时间复杂度是惊人的O(logn)绝对的高效可以看出来,这是一个...原创 2018-10-24 15:43:43 · 331 阅读 · 0 评论 -
数据结构与算法篇 跳表(Skip list)
跳表(Skip list),就是会跳的链表。。。。。。是一种在各方面性能都比较优秀的数据结构,可以支持快速的插入,删除,查找操作,写起来完全没有红黑树那么复杂和难理解。其中在Redis中的有序集合就是用跳表来实现的,其实红黑树也是一样的支持快速插入,删除和查找,那么为什么Redis要使用跳表实现有序集合,而在很多语言里为什么要使用红黑树来实现Map,例如C++STL讲了这么多,我们来看一下...原创 2018-10-29 11:43:34 · 336 阅读 · 0 评论 -
数据结构与算法篇 桶排序,计数排序,基数排序
今天我们来讲三种线性排序,时间复杂度O(n)的排序算法:桶排序,计数排序,基数排序假如我们要对100万的用户排序,那么我们该怎么做呢?归并排序?快速排序,最好的时间复杂度也要O(nlogn)首先来看一下桶排序的核心思想:将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序,然后它们组成的序列就有序了。桶排序的时间复杂度为什么为O(n),首先我们有n个数据,我们把它们均匀的分到m个...原创 2018-10-25 16:52:14 · 331 阅读 · 0 评论 -
数据结构与算法篇 之归并排序与快速排序
今天我们来学习两种时间复杂度为O(nlogn)的排序算法,归并排序与快速排序,这两种排序比上次讲的冒泡,选择,插入要常用的多,这两种排序比较适合与大规模的数据排序。其中归并排序和快速排序都是用到了分治思想归并排序的核心思想:先把一个数组分成前后两个部分,对前后两个部分进行分别排序,再将排序好的两部分合并起来,这样数组就有序了。分治思想跟递归的思想很想,就是把大问题分成一个一个的小问...原创 2018-10-24 11:43:15 · 262 阅读 · 0 评论 -
数据结构与算法篇 之冒泡,插入,选择排序
排序算法其实有很多,比如猴子排序,睡眠排序,面条排序,听都没听过。。。。。。。其中最经典的自常用的是:冒泡排序,插入排序,选择排序,归并排序,快速排序,计数排序,基数排序,桶排序排序算法里面一般第一个接触的就是冒泡排序,然后就是选择排序,插入排序,这几个简单的算法入门的。现在我们来想一个问题,就是为什么插入排序很冒泡排序的时间复杂度都是O(n^2),但在实际当中我们更倾向于于使用插...原创 2018-10-17 08:40:14 · 237 阅读 · 0 评论 -
数据结构与算法篇 之复杂度分析(下)
上一篇我们学习到了复杂度的大O表示法和分析技巧,就是O(1)O(n)O(logn)O(nlogn)那下一篇来讲解一下四个概念,就是最好情况时间复杂度,最坏时间情况复杂度,平均情况时间复杂度和均摊时间复杂度先来说一下两个稍微简单点的最好和最坏的find(int [] array,int n,int x){int i=0;int pos = -1;for(;i < n;i...原创 2018-09-29 17:57:47 · 219 阅读 · 0 评论 -
数据结构与算法篇 之复杂度分析(上)
一直以来都想把数据结构和算法学好,可是老是学到一半就放弃了,哈哈这次买了一个课程王争老师学习这次要用博客把这个过程记录下来第一步先来普及一下数据结构的概念。。。。。。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:Data_Struc...原创 2018-09-29 15:16:09 · 303 阅读 · 0 评论 -
数据结构与算法篇 之队列
什么事队列呢?队列你可以理解为排队买票,先来先买,后来的人只能站末尾,不允许插队,先进者先出,这就是经典的队列。双向队列队列只支持两种基本的操作,出队和入队,跟栈一样也是一种操作受限的线性表数据结构。队列的应用非常广泛,例如有循环队列,阻塞队列,并发队列,他们在很多偏底层的系统,框架,中间件开发中,起着关键性的作用,比如高性能队列Disruptor,Linux环形缓存都使用循环...原创 2018-10-13 09:35:36 · 212 阅读 · 0 评论 -
详解数据结构之Linux内核链表
链式存储(Linked Storage):将数据结构中各元素分布到存储器的不同点,用地址(或链指针)方式建立它们之间的联系,由此得到的存储结构为链式存储结构。如表 L=(a1, a2,……,an)的链式存储结构如下图对于普通链表我不做过多的解释,估计你也大概懂了,本文没有对具体的插入删除什么鬼的进行讲解,不懂。。。哈哈看看别的大神博客。现在就来讲讲Linux内核链表这个死鬼是怎么实现的...原创 2018-09-22 15:39:03 · 378 阅读 · 0 评论 -
数据结构与算法篇 之栈
关于栈,举一个确切的例子,就是我们洗盘子的时候,洗碗第一个放边上,洗完第二个有叠在第一个上面,,,然后就越来越高了,最后洗完第一篇了,接下来呢,就是再过一遍水,从最顶上一个个的拿出来,冲水冲洗干净后又一个个盘子摞起来。这里面设计到栈的全部操作,出栈与入栈,还有只能依次一个个的取出来和先进后出的特性;最上面的元素叫做栈顶,最下面的元素叫做栈低,当栈没有任何元素的时候叫做空栈。其实栈也就是...原创 2018-10-11 16:18:08 · 300 阅读 · 0 评论