图 - 最短路径(Dijkstra 和 Frolyd)
图 - 最短路径(Dijkstra 和 Frolyd) "最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。" 从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小,例:公交查询系统。 问题解法: 1. 求从某个源点到其余各点的最短路径

2022年8月18日
大约 7 分钟
数据结构基础 - 知识体系
数据结构基础 - 知识体系 数据结构的作用 数据结构实际上可以理解为数据在计算机中的存储和使用结构。如果借助C++容器的概念,数据结构可以认为是以某种特定的布局方式存储数据的容器。 这种“布局方式”决定了数据结构对于某些操作是高效的,而对于其他操作则是低效的。首先我们需要理解各种数据结构,才能在处理实际问题时选取最合适的数据结构。不同的数据结构适用于不同的应

2022年7月2日
大约 4 分钟
图 - 最小生成树(Kruskal和Prim)
图 - 最小生成树(Kruskal和Prim) "在给定一张无向图,如果在它的子图中,任意两个顶点都是互相连通,并且是一个树结构,那么这棵树叫做生成树。当连接顶点之间的图有权重时,权重之和最小的树结构为最小生成树!" 在实际中,这种算法的应用非常广泛,比如我们需要在n个城市铺设电缆,则需要n-1条通信线路,那么我们如何铺设可以使得电缆最短呢?最小生成树就是为

2022年7月2日
大约 3 分钟
图 - 拓扑排序(Topological sort)
图 - 拓扑排序(Topological sort) 什么是拓扑排序? 维基百科对于拓扑排序有如下定义: "a topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every direct

2022年7月2日
大约 6 分钟
排序 - 桶排序(Bucket Sort)详解
排序 - 桶排序(Bucket Sort)详解 1. 桶排序介绍 桶排序(Bucket Sort) 又称箱排序,是一种比较常用的排序算法。其算法原理是将数组分到有限数量的桶里,再对每个桶分别排好序(可以是递归使用桶排序,也可以是使用其他排序算法将每个桶分别排好序),最后一次将每个桶中排好序的数输出。 2. 桶排序算法 桶排序的思想就是把待排序的数尽量均匀地放

2021年3月26日
大约 5 分钟
排序 - 常见排序算法知识体系详解
排序 - 常见排序算法知识体系详解 排序算法介绍 排序算法是《数据结构与算法》中最基本的算法之一。 排序是计算机程序设计中的一种重要操作,其功能是对一个数据元素集合或序列重新排列成一个按数据元素某个相知有序的序列。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要

2021年3月26日
大约 3 分钟
排序 - 计数排序(Counting Sort)详解
排序 - 计数排序(Counting Sort)详解 计数排序介绍 计数排序不是一个比较排序算法,该算法于1954年由Harold H. Seward提出,通过计数将时间复杂度降到了O(N)。 计数排序基础版 基础版算法步骤 第1步:找出原数组中元素值最大的,记为max。; 第2步:创建一个新数组count,其长度是max加1,其元素默认值都为0。; 第

2021年3月26日
大约 9 分钟
排序 - 堆排序(Heap Sort)详解
排序 - 堆排序(Heap Sort)详解 堆排序介绍 堆排序(Heap Sort) 是指利用堆这种数据结构所设计的一种排序算法。堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行详细说明。 最大堆进行升序排序的基本思想: 1.

2021年3月26日
大约 16 分钟
排序 - 插入排序(Insertion Sort)详解
排序 - 插入排序(Insertion Sort)详解 插入排序介绍 插入排序(Insertion Sort),一般也被称为直接插入排序(Straight Insertion Sort)。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外

2021年3月26日
大约 5 分钟
排序 - 归并排序(Merge Sort)详解
排序 - 归并排序(Merge Sort)详解 归并排序介绍 将两个的有序数列合并成一个有序数列,我们称之为"归并"。 归并排序(Merge Sort) 是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。 从下往上的归并排序 将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序

2021年3月26日
大约 12 分钟
2