![](https://img-blog.csdnimg.cn/direct/63b6781af8d04e03a59498634a45c351.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 86
介绍基础算法
认真的小羽❅
山有峰顶,海有彼岸。漫漫长途,终有回转。余味苦涩,终有回甘。
展开
-
多源最短路径算法 -- 弗洛伊德(Floyd)算法
总的来说,Floyd算法是一种计算图中所有顶点对之间最短路径的动态规划算法,它能够处理包含负权边的图,但不允许存在负权回路。适用于小型到中等规模稠密图的算法,尤其是在需要全局最短路径信息时。对于大型稀疏图或者单源最短路径问题,其他算法如Dijkstra算法可能更加合适。原创 2024-06-13 11:24:02 · 1228 阅读 · 0 评论 -
位运算简介与相关技巧
程序中的所有数在计算机内存中都是以二进制的形式储存的。即 0、1 两种状态,位运算就是直接对整数在内存中的二进制位进行操作。由于是底层运算,如果运用得当可以以降低空间需求和提高执行效率。原创 2024-04-06 22:45:13 · 650 阅读 · 1 评论 -
经典排序 -- 归并排序(Merge Sort)
归并排序(Merge Sort)是一种分治法(Divide and Conquer)的典型应用,它将待排序的数据分为两半,分别对这两半进行排序,然后将排序好的两半合并成一个有序的数组。归并排序的时间复杂度为O(nlogn),空间复杂度为O(n)。归并排序,顾名思义先归(递归)后并(合并)的一种排序方式,将数组的数据分而治之。(归)将待排序的数据通过递归拆分到只有一个元素,那么它已经是有序的,直接返回。(并)将排序好的两半合并成一个最终的有序数组。时间复杂度低:归并排序的总体时间复杂度为。原创 2024-04-07 20:33:32 · 592 阅读 · 0 评论 -
经典排序 -- 非比较型的排序
不基于比较的排序算法主要有计数排序、基数排序等。核心思想是避免直接比较元素之间的大小关系,而是利用其他信息(如数值的分布特征或数字的位信息)来实现排序。计数排序是一种非比较型整数排序算法,其核心在于将输入的数据值转化为键,存储在额外开辟的数组空间中。计数排序在处理有限范围内的整数排序问题时,尤其是在数据分布密集的情况下,通常能够提供更好的内存效率。然而,如果数据范围很大或者数据分布非常稀疏,那么计数排序可能会导致辅助空间过大,从而不再节省内存。原创 2024-04-14 14:06:52 · 1802 阅读 · 1 评论 -
经典排序 -- 快速排序
快速排序是一种二叉树结构的交换排序方法,采用分治策略来对数据进行排序。选择基准值:通常选择序列的第一个或最后一个元素作为基准值。分区操作:重新排列序列,使得所有小于或等于基准值的元素都移到基准的左边,而所有大于基准值的元素都移到基准的右边。这一步完成后,基准值所在的位置就是其最终位置。递归排序:递归地将小于基准值的子序列和大于基准值的子序列再次进行快速排序。简而言之,就是将待排序集合分割成两个子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值。再对左右两子序列分别递归排序。原创 2024-04-08 22:46:52 · 2012 阅读 · 0 评论 -
单源最短路径算法 -- 迪杰斯科拉(Dijkstra)算法
简单易懂,实现简单。适用于有向图和无向图。时间复杂度较低,在稀疏图中表现较好。不能处理负权边。空间复杂度较高,毕竟需要存储所有顶点的最短距离。不适用于大规模图,效率较低。Dijkstra算法广泛应用于网络路由、地图导航、交通规划等领域,用于计算最短路径问题。然而,在实际应用中,需要注意算法的适用性和效率,根据具体问题选择合适的算法。原创 2024-06-08 11:07:30 · 918 阅读 · 0 评论