![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构复习
yittah
这个作者很懒,什么都没留下…
展开
-
数据结构day4——图
1.什么是图也是一种数据结构,由顶点的集合和边的集合组成。其中,边是指顶点的偶对。表示方法:G=(V,E)边数较少的称为稀疏图(V<|V|log|V|),相反,边数较多的则称为密集图,所有可能边都存在的叫做完全图。边有方向性的图称为有向图,否则称为无向图若图中的各个顶点均带有标号,则为标号图。边上带有权值的称为带权图。如果图上的一条路径各个顶点互不相同,则称为简单...原创 2019-07-02 15:06:08 · 490 阅读 · 0 评论 -
数据结构day5——检索
1.检索算法1)顺序表和线性表方法2)直接访问法(散列)3)树索引方法2.检索方法1)对于已排序的顺序表,最好用的是二分搜索2)词典检索(插值检索),像查词典一样,利用关键码的分布情况,首先在可能的范围中查看一个值,根据该位置的值决定下一次搜索的位置范围。3)自组织线性表,一种非根据键值检索的方式。按照数据被检索的频率排序,每次顺序查找,更新检索频率和重新排序。...原创 2019-07-06 16:35:48 · 182 阅读 · 0 评论 -
数据结构day7——线性表和数组高级技术
1.跳跃表多级跳跃表中存储多个指针。0级跳跃表只有一个指针,就是普通的链表形式;每多一级,结点中的指针就多一个。0级指针的跳跃数是1,1级指针的跳跃数是2,2级指针的跳跃数是4,以此类推。检索时,先从某一级的指针查看,若其指向的下一个结点值比关键码要大,则级数减一;如果比关键码小,就继续访问下一个结点,依次类推直到找到关键码或找不到为止。第一次检索选择的指针级别也可以是随机的,也可以按...原创 2019-07-11 15:30:31 · 177 阅读 · 0 评论 -
数据结构day5——外排序
1.外排序对磁盘上的记录进行排序。可用办法:1)使用虚拟存储,把整个文件读入虚拟存储中,然后允许内排序算法。问题在于虚拟存储大小有限制,磁盘上的文件过大的话可能无法放到虚拟存储中去。解决办法是利用缓冲池管理技术,克服虚拟存储大小的限制。2)调整内排序算法使之应用于外排序3) 置换选择算法在内存中开辟一部分作为数组,存放从磁盘中读出的一个块。假设这个块中有m条记录,根据这...原创 2019-07-06 14:09:23 · 175 阅读 · 0 评论 -
数据结构day5——内排序
1.交换排序:比较交换相邻记录称为一次交换,O(n^2)插入排序,选择排序,冒泡排序。2.shell排序,又叫缩小增量排序O(n^1.5)在不相邻的的记录之间进行比较和排序将序列分为子序列,并在子序列中执行插入排序。注意,子序列通常并不是连续的,比如一个16的序列,最初分为8个长度为2的子序列时,第0个和第8个元素才叫一个子序列,因此shell排序是在不相邻的记录之间进行比较交...原创 2019-07-06 09:55:32 · 89 阅读 · 0 评论 -
数据结构day3——树
1.一些概念树:由一个或多个结点组成的有限集;有一个根结点和多棵子树。将最左边的子树的根结点称为树的最左子结点。出度:结点的出度是指一个结点的子结点的数目。森林:零棵或多棵树的集合边定理:结点为n的树必定有n-1条边,因为除了根结点其余结点都有一条边连接其父亲结点。树的周游:a.前序周游:递归的方式,先访问根结点,再访问其最左子结点所在子树,再访问其最左子结点的右兄弟结点……,...原创 2019-06-29 11:05:19 · 256 阅读 · 0 评论 -
数据结构day2——堆与优先队列
1.堆的简介堆是用完全二叉树实现的,用于按某种优先级存放数据;最大值堆:每个结点的值大于或者等于其所有子结点的值;最小值堆:每个结点的值都小于或者等于其所有子结点的值;值得一提的是,堆结构中,任意两个兄弟结点之间的大小并没有必然联系。因此,对于给定的一组数据,堆并不是唯一的。2.实例:最大值堆的实现,基于数组的存储其中,堆的构造过程是将所有非叶结点从上往下调,且每次选择与...原创 2019-06-28 21:38:01 · 103 阅读 · 0 评论 -
数据结构day2——二叉树
1.什么是二叉树由有限结点组成,这棵树或者为空,或者由一个根节点和两棵不相交的二叉树组成。2.一些概念1)路径:从结点n1经过n2,n3……到nk的这条线路称为路径,路径长度为k-1.2)结点的深度与层数:一个结点M的深度和所在层数等于从根节点到M的路径的长度;3)树的高度:等于最深的结点的深度值+1.4)满二叉树:二叉树的每个结点,要么是叶结点,要么就一定有两个不为空的子...原创 2019-06-28 19:38:03 · 245 阅读 · 0 评论 -
数据结构day2——队列
1.什么是队列一种先进先出的线性表。2.实现方式1)顺序队列高效率队列:假定循环数组的概念,随着往队列里不断的插入和取出数据,整个队列往数组的右边移动,再将数组的第n-1个位置定义为位置0的前驱。这样可使得队列的插入和删除的时间复杂度都为O(1).这样做会出现新的问题,就是如何判断队列的空或者满。定义两个指针,分别是front,指向队列的首个元素,rear指针,指向队列的最...原创 2019-06-28 09:18:00 · 93 阅读 · 0 评论 -
数据结构day1——栈
1.什么是栈后进先出(LIFO)的线性表,仅能在一边进出。2.实现方式有:顺序栈和链式栈顺序栈的实现:将数组的尾部当作栈顶,在栈顶尾部进行pop和push操作只需要常数时间。//顺序栈的实现public class Astack implements StackADT{ private static final int defaultsize=10;//栈的默认大小 pri...原创 2019-06-27 17:27:09 · 101 阅读 · 0 评论 -
数据结构day1—— 线性表
1.什么是线性表由有限元素组成的序列。2.线性表的分类1)有序线性表:元素的值与其所在位置有关;2)无序线性表:元素的值与其所在位置并无联系。3.线性表ADT的定义public interface ListADT { public void clear(); public void insert(Object item);//插入数据到当前指针处(前置插入) pub...原创 2019-06-27 14:49:17 · 224 阅读 · 0 评论 -
数据结构day1 —— 一些基本定义
1.什么是数据结构理解为数据项的组织及其相关操作。2.为什么需要数据结构提高程序效率。3.抽象数据类型与数据结构1)什么是数据类型:类型是一组值的集合。数据类型即一个类型以及定义在该类型上的一组操作。数据项只是数据类型的一个成员,是该类型的一条记录。2)抽象数据类型ADT:仅定义了数据项的逻辑形式,隐藏了实现细节的数据类型。数据结构就是对抽象数据类型的物理实现。4.问题...原创 2019-06-27 09:19:24 · 123 阅读 · 0 评论 -
数据结构day6——索引技术
1.线性索引线性索引的索引文件是一组顺序的关键码/指针对,按照关键码进行排序,指针指向磁盘中的完整记录。1)一维数组线性索引局限性:可能会太大了导致无法存到主存,只能存到磁盘,哪怕使用二分检索,造成的IO代价也很高。解决办法:二级索引;二级索引是存储目标关键码的索引文件所在的磁盘块的。比如说,一个线性索引文件占据磁盘中的一百块,则二级索引文件中就要保存一百项,每一项中存储的是该块...原创 2019-07-11 10:49:05 · 198 阅读 · 0 评论