数据结构&算法
文章平均质量分 88
胡LiuJia
这个作者很懒,什么都没留下…
展开
-
跳跃表(SkipList)从原理到实现
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章数组与链表数组和链表是非常基础的两种数据结构,链表每次查找都需要从头结点开始线性遍历,时间复杂度是O(n)。而数组通过维护元素顺序可以使用二分查找,查找的时间复杂度是O(lg(n))。查找效率方面数组完胜链表。但是由于数组插入或删除元素时必须要移动所有受影响的节点,所以时间复杂度是O(n).并且数组的长度是固定的,当空间不够时需要重新分配内存。而链表插入和删除元素只需要改动少量指针即可,时间复杂度是O(1)。但是因为插入.原创 2021-04-12 08:44:17 · 641 阅读 · 0 评论 -
最小生成树MST:Prim算法和Kruskal算法
什么是最小生成树最小生成树是一副连通加权无向图中一棵权值最小的生成树[维基百科] 常见的应用例子有铺设道路连接所有城市、铺设管道等,目标都是使总长度最短。求解最小生成树的基本原理Prim算法和Kruskal算法是求解最小生成树的两种经典算法,这两个算法都是贪心算法。使用到了MST的一个性质:两个集合之间相连的最短的边一定属于两个集合组成的生成树。该性质的详细证明请见算法导论第23...原创 2018-03-30 23:23:49 · 1790 阅读 · 0 评论 -
二叉树的遍历(先序遍历,中序遍历,后序遍历,层次遍历)
二叉树简介维基百科对二叉树的定义:二叉树(英语:Binary tree)是每个节点最多只有两个分支(不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”和“右子树”。二叉树的分支具有左右次序,不能颠倒。 二叉树的遍历有4种方式,先序遍历,中序遍历,后序遍历,层次遍历,前三者均属于深度优先遍历,先序、中序、后序指的是遍历时根节点相对于左右孩子的次序,先序遍历的顺序为根节点->左子树->原创 2018-01-29 10:47:11 · 7002 阅读 · 0 评论 -
九种经典排序算法详解(冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)
综述最近复习了各种排序算法,记录了一下学习总结和心得,希望对大家能有所帮助。本文介绍了冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、计数排序、桶排序、基数排序9种经典的排序算法。针对每种排序算法分析了算法的主要思路,每个算法都附上了伪代码和C++实现。电梯直达1. 冒泡排序 2. 插入排序 3 .选择排序 4. 快速排序 5. 归并排序 6. 堆排序 7. ...原创 2018-01-26 01:08:25 · 6418 阅读 · 0 评论 -
单源点最短路径算法:Dijkstra算法
背景知识图简介图由节点和边组成,边有方向的图称为有向图,边没有方向的图称为无向图,最短路径算法里可以把无向图视为双向连接的有向图。 边有权重的图称为有权图,边没有权重的图称为无权图,无权图可以视为边的权重均为1的图。单源点最短路径给定图中的一个节点,求该节点到其他所有节点的最短路径。Dijkstra算法概述Dijkstra属于单源点最短路径算法,时间复原创 2018-01-20 09:15:17 · 2323 阅读 · 0 评论 -
单源点最短路径算法:Bellman-Ford算法
背景知识图简介图由节点和边组成,边有方向的图称为有向图,边没有方向的图称为无向图,最短路径算法里可以把无向图视为双向连接的有向图。 边有权重的图称为有权图,边没有权重的图称为无权图,无权图可以视为边的权重均为1的图。单源点最短路径给定图中的一个节点,求该节点到其他所有节点的最短路径。Bellman-Ford算法概述Bellman-Ford属于DP算法,原创 2018-01-20 14:34:45 · 1628 阅读 · 1 评论 -
所有结点对最短路径算法:Floyd-Warshall算法
背景知识图简介图由节点和边组成,边有方向的图称为有向图,边没有方向的图称为无向图,最短路径算法里可以把无向图视为双向连接的有向图。 边有权重的图称为有权图,边没有权重的图称为无权图,无权图可以视为边的权重均为1的图。点对点最短路径求图中任意(所有)两点之间的最短路径,Floyd-Warshall算法概述点对点路径可以通过将每个点作为源点使用Dijkst...原创 2018-01-20 18:15:20 · 2128 阅读 · 0 评论 -
0-1背包问题,动态规划
摘录转自http://www.cnblogs.com/Anker/archive/2013/05/04/3059070.html1. 动态规划算法: (1)全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解 ;(2)动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解 ;(3)边界条件:即最简单的,转载 2015-06-05 19:46:25 · 610 阅读 · 0 评论