算法分析与设计
文章平均质量分 79
刘不凡1998
哈尔滨工业大学(深圳)计算机科学与技术专业博士研究生在读,日常分享各种有意思的算法以及实现,帮助更多人理解算法之美。
展开
-
Counting Sort(计数排序)详解及其C++实现
计数排序不是基于比较的排序算法,其基本思想是对每一个输入的元素x,确定小于x的元素个数。为了实现这一点,算法需要一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。计数排序适用于小范围的整数,桶排序适用于数据分布较均匀的情况,可以处理更广泛类型的数据。对于包含负数的数组,可以通过调整数值(例如,加上数组中绝对值最大的负数的绝对值),将所有数转换为非负数,排序后再逆向调整。对于较大的数据范围,可以使用更复杂的算法如基数排序,它使用计数排序作为内部稳定排序方法,分步处理数字的每一位。原创 2024-04-14 15:36:09 · 989 阅读 · 2 评论 -
Floyd-Warshall算法C++实现
Floyd-Warshall 算法是一种用于解决图论中全源最短路径问题的经典动态规划算法。它可以在一个具有n个顶点的加权有向图中,找出任意两个顶点之间的最短路径长度。与单源最短路径问题不同,全源最短路径问题需要找出图中所有顶点对之间的最短路径长度。Floyd-Warshall 算法能够有效地解决这一问题,其时间复杂度仅为On3。原创 2024-04-13 19:30:49 · 1014 阅读 · 0 评论 -
Dijkstra算法C++实现
Dijkstra 算法是一个用于在图中找到单源最短路径的算法,特别适用于没有负权边的图。以下是一个详细的 C++ 实现,包括图的表示、优先队列的使用以及算法的主体实现。原创 2024-04-13 19:12:13 · 390 阅读 · 0 评论