![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
DavissHero
这个作者很懒,什么都没留下…
展开
-
数据结构和算法(1)-----简介
数据结构和算法是编程的基础,优秀的开源项目和JDK源码可以看到里面充斥着这些,那,如果你觉得看这些源码吃力的话,比如netty中使用了双向链表,如果你练概念都不清楚,就更别谈能不能看懂了,看了网上其他人的文章,有的写的真的非常好,我就借鉴一下,顺便把自己的理解也share下。 1.数据结构 数据结构:计算机存储和组织数据的一种方式,指相互之间存在一种或多种特定关系的元素的集合 数据结构的基本...原创 2018-11-30 11:32:17 · 139 阅读 · 0 评论 -
数据结构和算法(6)-----链表
1.链表和数组的比较 1).数组作为数据存储的一种结构,有一定的缺陷,比如无序数组搜索效率低,有序数组插入效率低,两者删除效率都比较低。而且在创建数组的时候需要指定数组的大小,如果无法提前预知大小,数组的动态扩展也是件麻烦事(netty的bytebuf是动态扩展的数组,有时间可以看看怎么实现的),给的值足够大的话,会造成不必要的内存开销。那么链表呢,可以有效解决扩容的问题。 2).数组可以用来...原创 2018-11-30 13:57:50 · 135 阅读 · 0 评论 -
数据结构和算法(8)-----堆
在数据结构和算法(5)-----队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现,这种实现方式尽管删除最大数据项的时间复杂度为O(1),但是插入还是需要较长的时间 O(N),因为每次插入平均需要移动一半的数据项,来保证插入后,数组依旧有序。 本篇博客我们介绍另外一种数据结构—...原创 2018-12-28 17:12:48 · 180 阅读 · 0 评论 -
数据结构和算法(2)-----数组
1.JAVA数据介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。 ①、数组的声明 第一种方式: 数据类型 [] 数组名称 = new 数据类型[数组长度]; 第二种方式: 数据类型 [] 数组名称 = {数组元素1,数组元素2,......} 这种方式声明数组的同时直接给定了数组的元素,数组的大小由给定的数组元素个...原创 2018-12-24 10:31:03 · 105 阅读 · 0 评论 -
数据结构和算法(3)-----栈
1、栈的基本概念 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删...原创 2018-12-24 11:28:50 · 138 阅读 · 0 评论 -
数据结构和算法(4)-----算法的时间复杂度和空间复杂度
1.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示随问题n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题规模n的某个函数。 这样用大写O()来...原创 2018-12-24 12:17:53 · 257 阅读 · 0 评论 -
数据结构和算法(5)-----队列
1、队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在...原创 2018-12-24 15:37:48 · 411 阅读 · 0 评论 -
数据结构和算法(7)-----二叉树
接下来我们将会介绍另外一种数据结构——树。二叉树是树这种数据结构的一员,后面我们还会介绍红黑树,2-3-4树等数据结构。那么为什么要使用树?它有什么优点? 前面我们介绍数组的数据结构,我们知道对于有序数组,查找很快,并介绍可以通过二分法查找,但是想要在有序数组中插入一个数据项,就必须先找到插入数据项的位置,然后将所有插入位置后面的数据项全部向后移动一位,来给新数据腾出空间,平均来讲要移动N/...原创 2018-12-24 23:27:09 · 202 阅读 · 0 评论