自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小二笙的博客

一剑,一人,足矣

  • 博客(23)
  • 收藏
  • 关注

原创 图论 (九) 拓扑排序算法

拓扑排序拓扑序列:对一个有向无环图(DirectedDirectedDirected AcyclicAcyclicAcyclic GraphGraphGraph简称DAGDAGDAG)GGG进行拓扑排序,是将GGG中所有顶点排成一个线性序列,使得图中任意一对顶点uuu和vvv,若边(u,v)∈E(G)(u,v)∈E(G)(u,v)∈E(G),则uuu在线性序列中出现在vvv之前。通常,这样的线性...

2019-01-27 09:49:17 349

原创 图论 (八) 最短路径算法【Floyd算法】

FloydFloydFloyd算法:又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与DijkstraDijkstraDijkstra算法类似核心思路路径矩阵通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=[map(i,j)]n×nA=[map(i,j)] n×nA=[map(i,j)]n×n开始,递归地进行n次更新,即由矩阵D...

2019-01-26 20:02:31 606

原创 图论 (七) 最短路径算法【Dijkstra算法】

现实生活中,我们常常会面临者对路径选择的决策问题。例如来到一个陌生的城市,面对着纷繁交错的地铁网图,该如何进行选择可能成为一个大问题。了解如何计算图的最短路径可能带来更为便捷的选择方式。对于非网图来说,由于没有权值,所谓的最短路径其实就是指两顶点之间经过的边数最少的路径;而对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。...

2019-01-26 14:39:38 595

原创 图论 (六) 最小生成树算法【Kruskal算法】

KruskalKruskalKruskal算法:从权值最小的边出发着手构建最小生成树的。其基本过程是:先对图中的所有边按照权重值从小到大进行排序,然后着手选取边构建最小生成树。如果直接从小到大按顺序选取,有可能形成了环,所以对环的处理就成了核心问题。图解还是以上一篇PrimPrimPrim算法中的例子来一个图解,这样更能理解一点(1) 首先构建一个边集数组,即对边权值进行排序后得到的结...

2019-01-25 14:01:08 1297

原创 图论 (五) 最小生成树算法【Prim算法】

最小生成树(MinimumMinimumMinimum SpanningSpanningSpanning TreeTreeTree,简称MSTMSTMST):构造连通网的最小代价生成树找连通网的最小生成树,经典的有两种算法,普里姆算法和克鲁斯卡尔算法。Prim算法大致思想:设图GGG顶点集合为UUU,首先任意选择图GGG中的一点作为起始点aaa,将该点加入集合VVV,再从集合U−VU-VU−...

2019-01-24 13:30:15 661

原创 图论(四) 图的遍历 【DFS、BFS】

图建构好后,针对具体的问题,我们常常需要通盘的读取图中的信息,包括顶点(vertexvertexvertex)和边(edgeedgeedge),以及它们之间的关系。这种读取图中所有信息的方法就是图的遍历(traversaltraversaltraversal),也称为搜索(searchsearchsearch),就是从图中某个顶点出发,沿着一些边访问图中所有的顶点,且使每个顶点仅被访问一次。遍历是...

2019-01-22 19:10:19 842

原创 图论(三) 图的存储结构

如果要用图来解决问题,首先我们必须采用某种数据结构来存储和表示“图”。相对于数组、链表等来说,图的存储结构就复杂的多了。首先,图上的任何一个顶点都可以被看作是第一个顶点,任意顶点的邻接顶点之间也不存在次序关系。还记得在《图论(一)基本概念》中的“同构图”吧,图的形状可以千变万化的。因此也就无法以数据元素在内存中的物理位置来表示元素之间的关系,也就是说,图不可能用数组这样简单的顺序存储结构来表示...

2019-01-22 15:44:28 503

转载 图论 (二) 树

原文地址:图论(二)树关于树的概念可以重点理解下度、层级/深度/高度这几个概念,尤其树的高度在笔试或面试中常考,应重点掌握。建立了图(graph)的认识,“树”就好理解了。“树”是一种很特别的图(graph)。用图来定义“树”:任意2点之间都连通,并且没有“环”的图。下面的图就是一颗树,因此,树是图的特例。当然,由于树是一种特别有用的数据结构,因此,它有着一些自身的特点和概念:一、节...

2019-01-22 11:13:12 730 2

转载 图论(一)基本概念

原文地址:图论(一)基本概念图(graph)是数据结构和算法学中最强大的框架之一(或许没有之一)。图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,图都有广阔的用武之地。而要进入图论的世界,清晰、准确的基本概念是必须的前提和基础。下面对其最核心和最重要的概念作出说明。关于图论的概念异乎寻常的多,先掌握下面最核心最重要的,足够开展一...

2019-01-22 10:55:38 2695

原创 数据结构快速提升(三)----队列【C++实现】

概述

2019-01-14 20:44:59 206

原创 数据结构快速提升(二)----栈【C++实现】

以下完整代码GithubGithubGithub,欢迎大家forkforkfork,starstarstar概述栈是限定仅在表尾进行插入和删除操作的线性表栈顶(toptoptop): 允许插入与删除的一端栈底(bottombottombottom): 另一端栈的特点:后进先出的线性表,简称LIFOLIFOLIFO结构栈也是一种线性表,因此其存储结构也可分为顺序存储结构与链式存储...

2019-01-13 20:01:18 212

原创 数据结构快速提升(一)----线性表【C++实现】

概述线性表是最常用且最简单的一种数据结构。简言之,一个线性表是nnn个数据元素的有限序列线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同的特性线性表的是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,还可进行插入和删除线性表的特点:插入方便 (优点)空间利用率低插入、删除麻烦线性表的顺序表示线性表的顺序表...

2019-01-12 19:35:51 1382 5

原创 简单易懂排序算法【总结】

相关概念稳定:如果aaa原本在bbb前面,而a=ba=ba=b,排序之后aaa仍然在bbb的前面。不稳定:如果a原本在ba原本在ba原本在b的前面,而a=ba=ba=b,排序之后 a 可能会出现在 bbb 的后面。时间复杂度:对排序数据的总的操作次数。反映当nnn变化时,操作次数呈现什么规律。空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模nnn的函数。排序分类...

2019-01-10 11:31:50 336

原创 简单易懂排序算法(七)【快速排序】

快速排序:基本思想是通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的...

2019-01-09 23:48:49 545

原创 简单易懂排序算法(六)【归并排序】

文章目录1. 递归版本1.1 复杂度分析2. 非递归版本2.1 复杂度分析“归并”一词中文含义就是合并、并入的意思,而在数据结构中的定义是将两个以上的有序表组组合成一个有序表组归并排序:就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后进行两两归并,得到[n2\frac {n}{2}2n​]个长度为2或1的有序子序列;...

2019-01-08 00:22:17 354

原创 简单易懂排序算法(五)【堆排序】

堆在分析堆排序之前首先对堆的概念进行一个简单的回顾,理解了堆的概念对于堆排序会有更好的理解堆是具有下列性质的完全二叉树

2019-01-07 10:36:21 8595 6

原创 简单易懂排序算法(四)【希尔排序】

希尔排序是D.L.Shell于1959年提出来的一种排序算法,在这之前排序算法的时间复杂度基本都是O(n^2)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。希尔排序:是对直接插入排序进行的一种改进排序算法,采用跳跃分割的方法,将整个待排序列分割成若干个子序列,对这些子序列进行直接插入排序,使其得到的结果基本有序,然后再不断缩减分割的区间,使其完全有序基本有序:就是小的关键字基本在前面...

2019-01-06 21:18:35 927 1

原创 简单易懂排序算法(三)【直接插入排序】

直接插入排序:基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。根据此思想我们可以写出如下代码:void InsertSort(vector<int>& vec){ int n = vec.size(); int i, j, tmp; for (i = 1; i < vec.size(); ++i) { tmp = v...

2019-01-06 20:15:13 589 1

原创 简单易懂排序算法(二)【简单选择排序】

简单选择排序:就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<= i <= n)个记录交换换而言之,即每次选出一个关键字最小的放在未排序的序列的首部来看代码:void SelectSort(vector<int>& vec){ int n = vec.size();

2019-01-06 16:53:54 1248

原创 简单易懂排序算法(一)【冒泡排序】

冒泡排序:一种交换排序,基本思想是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止1.容易理解的代码:void BubbleSort(vector<int>& vec){ int n = vec.size(); for (int i = 0; i < n - 1; ++i) { for (int j = i + 1; j &

2019-01-06 15:04:07 37125 13

原创 多线程入门概述

进程与线程进程进程是包含程序指令和相关资源的集合,每个进程和其他进程一起参与调度,竞争CPU、内存等系统资源。每个进程都有一个非负整型表示的唯一进程ID进程是系统资源进行资源分配和调度的一个独立的单位线程“轻量级进程”,是一个基本的CPU执行单元,也是程序执行流的最小单元线程只是进程中的一个实体,是系统独立调度的单元,线程本身不拥有系统资源,但是它可以与同属一个进程的其他线程共...

2019-01-05 15:16:44 196

原创 计算机网络【课程复习】

【主要巩固课堂上老师所讲的一些重点以及为期末考试做准备】第一章 概述学习目标1.了解计算机网络的通信方式2.理解网络性能指标,会运用相应理论计算网络性能3.掌握计算机体系结构两种计算机网络通信方式CS通信方式(即客户端与服务端通信模式)-- 浏览网页P2P通信方式(节点之间信息传输) – 迅雷下载网络的组成以及网络的分类组成:路由器、主机、网线、交换机、集线器、...

2019-01-02 22:02:13 1620 1

原创 网络分析工具--【ping、tcpdump、netstat、lsof、ss】

1. ping概述ping(Packet Internet Groper)是Windows、UNIX和Linux系统下的一个命令ping也属于一个通信协议,是TCP/IP协议的一部分利用ping命令可以检查网络是否连通,可以很好地帮助分析和判断网络故障原理:利用网络上机器IP地址地唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连通以及时延...

2019-01-01 15:32:19 3173 7

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除