随笔分类 -  数据结构与算法

摘要:用C++实现图的DFS和BFS(邻接表) 概述 图的储存方式有邻接矩阵和邻接表储存两种。由于邻接表的实现需要用到抽象数据结构里的链表,故稍微麻烦一些。C++自带的STL可以方便的实现List,使算法的实现变得简单起来 算法概述 为了让我们的算法更有普适性,我们将非连通图也考虑在内。其实,要想遍历到类 阅读全文
posted @ 2019-04-23 22:05 orion-orion 阅读(787) 评论(0) 推荐(0) 编辑
摘要:二叉查找树的相关操作 概述 二叉查找树(Binary Search Tree)是一种非常重要的数据结构。它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别 阅读全文
posted @ 2019-04-19 20:27 orion-orion 阅读(156) 评论(0) 推荐(0) 编辑
摘要:堆排序 概述 堆排序(这里指从小到大)巧妙地运用了大顶堆(一种每个根节点都大于其两个子节点的特殊二叉树)的性质对数组进行排序,时间复杂度为O(NlogN)。不仅在排序之前要构建大顶堆,而且每轮交换都要重新下沉堆顶元素以维护大顶堆,显得不是很方便。但是因为这个方法设计巧妙,直观而容易理解,我们还是要学 阅读全文
posted @ 2019-04-15 09:11 orion-orion 阅读(147) 评论(0) 推荐(0) 编辑
摘要:Kruscal算法求图的最小生成树 概述 和Prim算法求图的最小生成树一样,Kruscal算法求最小生成树也用到了贪心的思想,只不过前者是贪心地选择点,后者是贪心地选择边。而且在算法的实现中,我们还用用到了并查集(也称不相交集的)Union /Find 算法来判断两个节点连通后会不会形成一个环。该 阅读全文
posted @ 2019-04-13 14:35 orion-orion 阅读(525) 评论(0) 推荐(0) 编辑
摘要:图的最小生成树算法及最短路径算法 ——Prim算法,Dijkstra算法及Floyd算法 概述 我的上一篇博客图的DFS与BFS(C++)中谈到了用C++实现图的构建和遍历。这次,我仍然准备构建储存结构为邻接矩阵的无向图,来实现求图的最小生成树的Prim算法,求图单源最短路径的Dijkstra算法, 阅读全文
posted @ 2019-04-11 22:12 orion-orion 阅读(553) 评论(0) 推荐(0) 编辑
摘要:图的DFS与BFS(C++) 概述 大一学生,作为我的第一篇Blog,准备记录一下图的基本操作:图的创建与遍历。请大佬多多包涵勿喷。 图可以采用邻接表,邻接矩阵,十字链表等多种储存结构进行储存,这里为了方便演示算法,采用邻接矩阵。 图为边的权值都默认为1的无向图 。 国内大学现行教材大多是C语言实现 阅读全文
posted @ 2019-04-10 10:56 orion-orion 阅读(232) 评论(2) 推荐(1) 编辑

点击右上角即可分享
微信分享提示