![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
LeBronGod
life is a fu ck ing movie
展开
-
数据结构与算法网课成果汇总
树上:https://blog.csdn.net/LebronGod/article/details/104419126中:https://blog.csdn.net/LebronGod/article/details/104426171下:https://blog.csdn.net/LebronGod/article/details/104426405图上:https://blog.c...原创 2020-02-29 19:54:38 · 251 阅读 · 0 评论 -
PTA7-9 旅游规划
描述有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市...原创 2020-02-28 19:46:42 · 313 阅读 · 0 评论 -
PTA6-2 顺序表操作集
本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Positi...原创 2020-02-28 19:37:45 · 532 阅读 · 0 评论 -
PTA7-4 是否同一棵二叉搜索树
描述给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要...原创 2020-02-28 19:29:21 · 189 阅读 · 0 评论 -
数据结构与算法之散列查找
散列表下面是几种已知的查找方法,右边是他们的时间复杂度。时间复杂度最好也只是O(N),有没有一种查找方式可以一找就找到呢,有,那就是散列查找散列查找的关键就是创建散列表。散列表:是实现字典操作的一种有效数据结构。最坏查找时间为O(n),理论上可以达到的平均查询时间是O(1)。散列表是普通数组概念的推广,当实际存储的关键字数目比全部的可能关键字总数要小时,采用散列表就成为直接数组寻址的一种有...原创 2020-02-27 20:41:21 · 3591 阅读 · 1 评论 -
数据结构与算法之排序(下)
快速排序快速排序在算法的实现上与归并排序有点类似,因为他们都采用了分而治之的思想,一想到分治我们又想到递归。快排时我们会随机选取一个元素作为主元,然后根据这个主元我们可以将剩下的数据分成两堆,一堆比主元小,一堆比主元大,然后就开始对这两堆进行递归的治。我们来看看他的伪码描述当我们学习归并排序时每次分治都是从中间劈开分的,所以快排时我们也应该遵循这样的原则,否则会出现下面的情况如果这个序...原创 2020-02-26 18:45:05 · 168 阅读 · 0 评论 -
数据结构与算法之排序(上)
简单排序(冒泡、插入)对于冒泡这个排序算法,相信大家都不陌生,所以我们更加深入的来看一下这个算法,讨论一下他的时间复杂度,最好情况是当所有元素都按升序排列好了,这个时候的时间复杂度是O(N),多少个元素就比较了多少次。为了不让排序无脑的进行下去,我们加了一个flag标记,排好序便会自动退出。最坏的情况下,都是逆序排的那么我们就得比较n*(n-1)/2次才能排好,此时的时间复杂度最坏是O(N2)....原创 2020-02-25 14:20:24 · 140 阅读 · 0 评论 -
数据结构与算法之图(下)
最小生成树树有一个特点:有n个节点,就有n-1条边。这显然是把n个节点连起来的最少边数,之所以在图当中提到这个,是为了解决图当中将所有联通的顶点连接起来,要求这些边的权重加起来最小的问题。权重和最小这个要求听上去好像是有点耳熟啊,没错,之前讲迪杰特斯拉算法就是解决了单源最短路径的问题,那条路径是那两点之间权重加起来最小的,但他并不一定将整个连通图里的顶点都包含进去了。不过我们可以依照一样的思想...原创 2020-02-24 10:42:05 · 138 阅读 · 0 评论 -
数据结构与算法之图(中)
最短路径问题现实生活中经常会碰到下面这些这样的问题:从家去博物馆走那条路最近、从北京到广州怎么走高速费最少等等毕竟精打细算才是正道嘛 屁!就是穷这其实就是我们图里的最短路径问题,也可以说是最优路径问题(哪怕远一点,高速费便宜就行嘻嘻)。我们把路径起始的第一个顶点称为源点,最后一个顶点称为终点。所谓单源最短路径问题,就是从某一顶点v0 出发,找从它到图中其他各个顶点的最短路径。最短路...原创 2020-02-23 21:21:14 · 133 阅读 · 0 评论 -
数据结构与算法之图(上)
什么是图图是一种非常强大的数据结构,图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。当我们需要处理多对多这么一种关系时,我们就可以建立一张图来解决。图中的顶点是我们的数据元素(线性表中我们把数据元素叫元素,树中叫结点,在图中数据元素我们则称之为顶点),边就是这些研究对象之间的关系,通常称之为权重,具体...原创 2020-02-22 14:06:35 · 198 阅读 · 0 评论 -
数据结构与算法之树(下)
堆这里所讲的堆不是之前的堆栈,而是一种树。他总是一棵完全二叉树,其根节点总是不小于或不大于他的子孙节点。每一个根节点都可以视为堆顶,因为对于堆的每棵子树都可以视为完全二叉树。正是因为堆拥有这样的性质我们将他用来实现优先队列优先队列意思就是每次出队其中权重较大的元素当然可以用数组或链表来实现,但他们的复杂度总是不尽人意(因为要排序)堆就不同了,最大堆每次取出其根节点就是最大的了,每次...原创 2020-02-21 13:30:51 · 226 阅读 · 0 评论 -
数据结构与算法之树(中)
二叉搜索树二叉搜索树跟之前讲到的由二分引出树的表示有所关联,比如上图画圈的那棵查找树就是1~11进行二分查找的过程,因此查找树左右根之间的关系就是左<根<右,且右子树的任意元素都大于左子树。构建二叉搜索树的代码:void insert(Tree*tree,int value){ Node *node=(Node *)malloc(sizeof(Node));//申请新...原创 2020-02-21 13:23:51 · 150 阅读 · 0 评论 -
数据结构与算法之树(上)
树的表示数据结构网课树这一章开头树与树的表示以二分讲起,第一次二分选取的mid便是一棵二叉树的根,往左即为左子树,往右则为右子树,节点所在深度即为二分查找至该节点时查找的次数,最大查找次数为各层节点数乘以各层深度再相加(就感觉这个很巧妙,算法之间还是有联系的)。之后看树的存储结构,在计算机中数据的存储有两种结构顺序存储和链式存储,顺序存储结构显然是不行的,而链式存储结构也是有缺点的:由于链式存...原创 2020-02-20 22:23:09 · 157 阅读 · 0 评论 -
数据结构与算法之线性结构
线性表线性表是由同一类型的数据元素构成的线性结构,特点是:数据元素间呈一种线性关系。线性表是具有相同数据类型的n个数据元素的有限序列,通常记为:(a1,a2,a3,······,a(i-1),ai,a(i+1),······,an)线性表(linear List)的分类:数组、链表、栈、队列线性表的顺序表示——数组:没错我们熟知的数组就是一种线性表数据结构,它用一组连续的内存空间,来存...原创 2020-02-20 21:53:38 · 492 阅读 · 0 评论 -
数据结构与算法基本概念
数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合。这个世界上每天都会产生大量的数据,在大数据时代,数据可以说是非常宝贵,因此怎么更好得数据的处理在日常中是很重要的,于是就产生了下面这些数据结构类型:集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。线性结构:结构中的数据元素之间存在一个对一个的关系。树形结构:结构中的数据元素存在一个对多个的关系。图形...原创 2020-02-20 21:31:30 · 424 阅读 · 0 评论