算法 (Algorithm)
文章平均质量分 81
道可可
道可道, 非常道. 无心不问道, 无为不谓道; 有是言无为, 非无为, 乃顺势而为.
展开
-
【CS.AL】算法核心之贪心算法 —— 力扣(LeetCode)743. 网络延迟时间 - Dijkstra算法题解
需要多少时间才能使所有节点都收到信号?如果不能使所有节点收到信号,返回。可以使用 Dijkstra 算法来解决这个问题。现在,我们从某个节点。原创 2024-06-21 23:34:01 · 430 阅读 · 0 评论 -
【CS.AL】算法核心之分治算法:从入门到进阶
分治算法(Divide and Conquer)是一种重要的算法设计思想,其核心思想是将一个复杂的问题分解为多个相对简单的小问题,通过解决这些小问题再合并其结果,从而得到原问题的解。分治算法的典型特征是递归,常用于求解具有重复子问题性质的问题。分治算法是一种强大的算法设计思想,能够高效地解决许多复杂的问题。通过将问题分解为更小的子问题,分治算法不仅能够降低时间复杂度,还具有良好的可扩展性。在实际应用中,理解和掌握分治算法的思想和典型应用,对于解决各种问题具有重要意义。原创 2024-06-15 09:41:39 · 650 阅读 · 0 评论 -
【CS.AL】算法核心之贪心算法:从入门到进阶
贪心算法是一种求解优化问题的算法策略。在每一步选择中,贪心算法都会选择当前最优解,希望通过一系列局部最优解的选择,达到全局最优解。贪心算法不回溯,不进行全局考虑,而是根据局部情况作出当前最优的选择。贪心算法是一种简单而高效的算法策略,在解决满足贪心选择性质的问题时,能够得到较好的结果。然而,要注意贪心算法的局限性,它不适用于所有问题,有些问题需要考虑其他算法设计策略,如分治、动态规划等。因此,在实际应用中,需要根据问题的性质和要求选择合适的算法策略。原创 2024-06-15 09:08:41 · 1373 阅读 · 0 评论 -
【CS.AL】算法复杂度分析 —— 渐进符号表示法
渐进符号表示法用于描述算法的时间复杂度和空间复杂度,衡量算法的性能。它可以帮助我们分析和比较不同算法的效率,尤其是当输入规模变大时。常见的渐进符号包括大O符号(O)、Ω符号(Ω)、Θ符号(Θ)、o符号(o)和ω符号(ω)。原创 2024-06-14 21:11:25 · 1207 阅读 · 0 评论 -
【CS.AL】算法复杂度分析 —— 空间复杂度详解
空间复杂度是衡量一个算法在运行过程中所需要的存储空间量,它描述了算法在处理不同规模的输入时,所需存储空间的增长趋势。空间复杂度同样使用大O记号表示,比如O(1)、O(n)、O(n²)等。O(1) - 常数空间复杂度这种算法所需的存储空间在输入规模增大时保持不变。例如:变量赋值、常量存储。O(n) - 线性空间复杂度这种算法所需的存储空间与输入规模成正比。例如:使用数组或列表存储输入数据。O(n²) - 平方空间复杂度这种算法所需的存储空间随着输入规模的平方级增长。例如:二维数组的使用。原创 2024-06-14 21:08:22 · 594 阅读 · 0 评论 -
【CS.OS】堆管理算法:不同的堆分配和管理算法
内存分配算法用于动态地分配和释放内存,以便程序能够高效地使用系统资源。通过了解不同的内存分配算法,我们可以更好地优化程序的内存使用,提高系统的性能和稳定性。希望这篇文章不仅能为你带来技术上的提升,还能激发你对内存管理的兴趣和热情。在实际项目中,你使用过哪些内存分配算法?它们在你的项目中表现如何?欢迎在评论区分享你的经验和见解,与其他读者互动,共同探讨内存管理的最佳实践。原创 2024-06-10 20:00:00 · 724 阅读 · 0 评论 -
【CS.AL】C语言实现:层次建立二叉树
主函数 main,从标准输入读取数据并构建二叉树,然后打印树的前序遍历结果。构建二叉树的函数 buildBinaryTree。定义二叉树节点和队列节点的数据结构。前序遍历函数 preOrder。原创 2020-02-21 07:33:11 · 3555 阅读 · 1 评论 -
【CS.AL】算法复杂度分析 —— 时间复杂度详解
时间复杂度是衡量一个算法执行效率的重要指标,它描述了算法在输入规模增长时,所需执行时间的增长趋势。时间复杂度通常用大O记号表示,比如O(1)、O(n)、O(n²)、O(log n)等。O(1) - 常数时间复杂度这种算法在输入规模增大时,执行时间保持不变,不受输入规模影响。例如:数组访问、哈希表查找。O(log n) - 对数时间复杂度这种算法的执行时间随着输入规模的增大而对数级增长,常见于二分查找等。例如:二分查找、平衡二叉树查找。O(n) - 线性时间复杂度。原创 2024-06-09 09:30:41 · 997 阅读 · 0 评论 -
【CS.AL】八大排序算法 —— 快速排序全揭秘:从基础到优化
快速排序:快速排序也采用分治策略,选择一个基准元素,将数组分成比基准小和比基准大的两部分,再对两部分递归地进行排序。快速排序的平均时间复杂度为O(n log n),是目前应用广泛的排序算法之一。Introsort(内排序)从快速排序开始作为主要排序算法。在最坏情况下(例如,数组已经排序或接近排序),快速排序可能退化为O(n²)时间复杂度。为了避免快速排序的最坏情况,Introsort引入了一个最大递归深度。当递归深度超过这个阈值时,算法切换到堆排序或归并排序,以确保更好的最坏情况性能。for(;原创 2024-06-09 09:10:24 · 324 阅读 · 0 评论