数据结构与算法希尔排序算法,C语言实例代码详解 复杂度与稳定性 算法时间复杂度 最坏情况:O(n^2) 最好情况:O(n) 平均情况:O(n^2) 稳定性:不稳定排序 2.过程介绍 希尔排序,又名递减增量排序算法,是一种非稳定的更高效的插入排序,在... 2022-07-171,275 viewsCommentsC语言 排序算法 阅读全文
数据结构与算法堆排序算法,C语言代码实例详解 1.复杂度与稳定性 算法时间复杂度 最坏情况:O(n^2) 最好情况:O(n) 平均情况:O(nlogn) 稳定性:不稳定排序 2. 什么是堆? 堆排序是一个比较特殊的排序方式,在学习之前我们必须要了... 2022-07-171,214 viewsCommentsC语言 排序算法 阅读全文
数据结构与算法简单选择排序算法,C语言实例代码详解 1.复杂度与稳定性 算法时间复杂度 最坏情况:O(n^2) 最好情况:O(1) //即不需要排序,本身已是正序 平均情况:O(n^2) 空间复杂度:S(n)=O(1) 稳定性:不稳... 2022-07-171,310 viewsCommentsC语言 排序算法 阅读全文
数据结构与算法动态查找——二叉排序树介绍与C语言代码实现 1. 算法简介 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。该树属于一种输入数据就默认产生一种顺序的数据结构,这不像本章前面... 2022-07-171,284 viewsCommentsC语言 二叉树 阅读全文
数据结构与算法动态查找——平衡二叉树,C语言/C++代码实现 1. 简介 平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红... 2022-07-171,079 viewsCommentsC语言 二叉树 阅读全文
数据结构与算法线性(顺序)查找算法介绍与C语言/C++代码实现 1. 查找算法 查找算法是指:从一些数据之中,找到一个特殊的数据的实现方法。查找算法与遍历有极高的相似性,唯一的不同就是查找算法可能并不一定会将每一个数据都进行访问,有些查找算法如二分查找等,并不需要... 2022-07-171,007 viewsCommentsC语言 阅读全文
数据结构与算法折半查找(二分查找)介绍与C语言/C++代码实现 1. 算法简介 二分查找也称折半查找(Binary Search),多数的人喜欢叫他二分查找。它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列,注... 2022-07-171,010 viewsCommentsC语言 阅读全文
数据结构与算法分块查找算法介绍与C语言/C++代码实现 1. 算法简介 分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况,其核心有二索引表,二是分块处理。 分块查找要求把... 2022-07-171,065 viewsCommentsC语言 阅读全文
数据结构与算法最短路径——弗洛伊德(Floyd)算法及C语言/C++代码实现 1. 算法简介 弗洛伊德算法与迪杰斯特拉算法是公认的最著名的两种最短路径求解算法,接下来介绍弗洛伊德算法,弗洛伊德算法的思路是:首先初始化距离矩阵,然后从第一个点开始逐渐更新矩阵点值。d[i][j]表... 2022-07-17897 viewsCommentsC语言 阅读全文
数据结构与算法最小生成树——普利姆(Prim)算法及C语言/C++代码实现 1. 最小生成树(又名:最小权重生成树) 概念:将给出的所有点连接起来(即从一个点可到任意一个点),且连接路径之和最小的图叫最小生成树。最小生成树属于一种树形结构(树形结构是一种特殊的图),或者说是直... 2022-07-17857 viewsCommentsC语言 阅读全文
数据结构与算法最小生成树——克鲁斯卡尔(Kruskal)算法及C语言/C++代码实现 1. 克鲁斯卡尔算法简介 克鲁斯卡尔算法是一种用来寻找最小生成树的算法(用来求加权连通图的最小生成树的算法)。在剩下的所有未选取的边中,找最小边,如果和已选取的边构成回路,则放弃,选取次小边。 而具体... 2022-07-171,061 viewsCommentsC语言 阅读全文
数据结构与算法图论研究算法问题——最短路径,迪杰斯特拉(Dijkstra)算法及C语言/C++代码实现 1. 何为最短路径 最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径,大致可以分为如下几种问题,可无论如何分类问题,其本质思想还是不变的,即,求两点间... 2022-07-17680 viewsCommentsC语言 阅读全文
数据结构与算法图的遍历:BFS广度优先搜索算法C语言代码示例 1. 简介 BFS(Breadth First Search,广度优先搜索,又名宽度优先搜索),与深度优先算法在一个结点“死磕到底“的思维不同,广度优先算法关注的重点在于每一层的结点进行的下一层的访问... 2022-07-17842 viewsCommentsC语言 阅读全文
数据结构与算法图的存储:结构设计、链式向前星代码C语言示例 1. 概念 链式向前星代码是基于向前星代码的优化,这是极大多数算法竞赛以及高效率图论算法喜欢适用的创建方法,与邻接表和邻接矩阵比较容易的理解方式,向前星算法并不容易理解。 在理解链式向前星之前我们需要... 2022-07-17712 viewsCommentsC语言 阅读全文
数据结构与算法图的遍历:DFS深搜优先搜索及C语言代码实现 1. 图的遍历 在理解DFS算法之前,我们首先需要对什么是遍历进行了解,遍历的概念就是:从某一个点出发(一般是首或尾),依次将数据结构中的每一个数据访问且只访问一遍。 2. DFS简介 DFS(Dep... 2022-07-17939 viewsCommentsC语言 DFS算法 阅读全文
数据结构与算法图关系——邻接表概念与特点,C语言/C++代码实现 1. 邻接表概念 邻接表(Adjacency List)顾名思义,就是通过链表或者利用数组模拟链表的方式将图的相连接关系表示的一种方法,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合... 2022-07-171,229 viewsCommentsC语言 阅读全文
数据结构与算法什么是图?定义与基本概念,邻接矩阵C语言示例代码 1. 什么是图 图论(graph theory) 是数学的一个分支,它以 图 为研究的对象。 图论本身是应用数学的一部分,历史上图论曾经被很多数学家各自独立建立过。关于图论的最早文字记载最早出现在欧拉... 2022-07-17865 viewsCommentsC语言 阅读全文
数据结构与算法哈夫曼树查找算法与编码(C语言实现代码) 1.哈夫曼树的查找算法 查找算法根据构建哈夫曼树算法衍生而来,我们在构建二叉树时需要查找出哪些数据最小,以符合我们哈夫曼树的最优解情况。 查找权重值最小的两个结点的思想是:从待处理数据的头部位置开始,... 2022-07-171,053 viewsCommentsC语言 二叉树 阅读全文
数据结构与算法哈夫曼树(最优二叉树)的介绍及C语言代码实现 1. 简介 哈夫曼树(Huffman Tree),又名:最优二叉树,赫夫曼树 其标准含义是:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称... 2022-07-171,145 viewsCommentsC语言 二叉树 阅读全文
数据结构与算法二叉树(树)与森林的相互转换 1. 什么是森林 森林,顾名思义,就是由众多的树构成的一组数据结构,这些树本身没有什么联系,用系统的语言描述就是:森林:m(>=0)棵互不相交的树的集合 【注意这里森林是可以有0颗树的,同数学上... 2022-07-171,023 viewsComments二叉树 阅读全文
数据结构与算法C语言例题讲解:二叉树形模拟法的运用 1. 模拟法简介 在前面的文章已经提到过模拟这个思维,模拟的思维无处不在,就树形的DFS算法而言,我们更多的情况并非建立一棵树,这对我们书写和易用性而言太差了,我们通常会适用多个数组进行模拟,树也是可... 2022-07-171,040 viewsCommentsC语言 二叉树 阅读全文
数据结构与算法遍历或搜索树或图——DFS(深度优先搜索)算法讲解C语言代码示例 1. DFS简介 深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被... 2022-07-171,227 viewsCommentsC语言 DFS算法 阅读全文
数据结构与算法树的遍历之后序遍历二叉树,C语言示例代码VS后缀表达式(逆波兰式) 1. 简介 依旧是下面的这三句话: 先序遍历:根左右 中序遍历:左根右 后序遍历:左右根 后序遍历就是在访问二叉树的结点的时候采用,先左,再右,再根的方式,对于一个最简单的访问而言如图,... 2022-07-171,769 viewsCommentsC语言 二叉树 阅读全文
数据结构与算法树的遍历之中序遍历二叉树,C语言示例代码 1. 简介 依旧是下面的这三句话: 先序遍历:根左右 中序遍历:左根右 后序遍历:左右根 在上文我们接触到了先序遍历,本文我们开始学习中序遍历,中序遍历采用左根右的遍历方式,如图,就一个... 2022-07-171,029 viewsCommentsC语言 二叉树 阅读全文