随笔分类 - 大话数据结构知识总结
作为之前一直搞算法的人,觉着算法仅限于纸上谈兵,但是通过<<剑指offer>>还有此书的学习,让我又找到了一片算法的新天地,目前在这里仅做知识的总结!
摘要:数组:按序号访问元素,连续存储,元素可以有序、也可以无序,用下标来定位元素,元素的数量确定(有上限),按下标访问很快,插入和删除元素、排序的开销比较大(元素的移位操作),数组元素无序时,元素的排序速度比较慢(依次比较),数组元素有序时,元素的查找速度比较慢(二分查找,比无序时快)。 链表:插入、删除
阅读全文
摘要:根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间,程序之间的切换会有较大的开销;线程可以看作轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 所处环境:在操作
阅读全文
摘要:内排序是在排序的整个过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。 最简单的排序实现,冒泡排序是一种交换排序,他的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 简单选
阅读全文
摘要:查找:查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 动态查找表:在查找过程中同时插入 查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。 顺序查找:又叫线性查找,是最基本的查找技术,他的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行
阅读全文
摘要:图的邻接矩阵:图的邻接矩阵存储方式是用两个数组表示图。一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中边或弧的信息。如下图所示: 无向图的边数组是一个对称矩阵。有向图矩阵不对称。 图的遍历:深度优先更适合目标比较明确,以找到目标为主要目的情况,而广度优先更适合在不断扩大遍历范围时找
阅读全文
摘要:树:树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中: (1) 有且仅有一个特定的称为根(Root)的结点; (2) 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、….、Tn,其中每一个集合本身又是一棵树,并且称为根的子树。 对于树还需要强调两点: 1、n
阅读全文
摘要:串:串是由另个或多个字符组成的有限序列,又名叫字符串。 所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。 串的逻辑结构和线性表很相似,不同之处在于串针对的是字符集,也就是串中的元素都是字符,哪怕串中的字符是“123”这样的数字组成。 对于串的基本操作与线性表是有很大差别的,线性表更关注的是单个
阅读全文
摘要:队列的数据类型 同样是线性表,队列也有类似线性表的各种操作,不同的就是插入数据只能在队尾进行,删除数据只能在对头进行。 所以解决假一处的办法就是后面满了,就再从头开始,也就是头尾相接的循环,我们把队列的这种头尾相接的顺序存储结构陈伟循环队列。 队列的链式存储结构,其实就是线性表的单链表,只不过它只能
阅读全文
摘要:总的来说,静态链表优缺点:优点:在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点 缺点:没有解决连续存储分配带来的表长难以确定的问题;失去了顺序存储结构随机存取的特性 总的来说:静态链表其实时为了给没有指针的高级语言设计的一种实现单
阅读全文
摘要:线性表顺序存储结构的优缺点: 优点:1、无须为表示表中元素之间的逻辑关系而邢家额外的存储空间 2、可以快速地存取表中任一位置的元素 缺点 :1、插入和删除操作需要移动大量元素 2、当线性表长度变化较大时,难以确定存储空间的容量 3、造成存储空间的“碎片” 线性表的链式存储结构: 为了表示每个数据元素
阅读全文
摘要:在进行算法分析时,语句总是执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,基座:T(n)=O(f(n)).它表示岁问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复
阅读全文
摘要:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。 算法具有零个或多个输入,算法至少有一个或多个输出,算法是一定要有输出的,不需要输出,你要这个算法干嘛。 有穷性:是指算法在执行有限的步骤之后
阅读全文
摘要:高斯: sum=1+2+3+...+99+100 sum=100+99+98+...+2+1 2*sum=101+101+101+...+101+101(共100个) 所以sum=5050 用程序实现如下:
阅读全文
摘要:数据结构是一门研究非数值计算的程序设计问题中的操作对象,一级他们之间的关系和操作等相关问题的学科。 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符合集。数据不仅仅包括整型、实数型等数值类型,还包括字符及声音、图像、视频等非数值类型。 数据元素:是组成数
阅读全文

浙公网安备 33010602011771号