随笔分类 - 算法
摘要:主要参考:归并排序的C++实现 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并过程
阅读全文
摘要:困惑的点——log,如何计算得出? ① 上限:用来表示该算法可能有的最高增长率。 ② 大O表示法:如果某种算法的增长率上限(最差情况下)是f(n),那么说这种算法“在O(f(n))中”。n为输入规模。 上限的精确定义:对非负函数T(n),若存在两个正常数c和n0,对任意n>n0,有T(n)<cf(n
阅读全文
摘要:1.DFS DFS是一个递归过程。(类似于二叉树的前序遍历) 参考:深度优先搜索(Depth-First-Search)精髓 2.BFS 可以理解为按层遍历,借助队列结构来实现。(类似于二叉树的层次遍历) 参考:[数据结构]广度优先搜索算法(Breadth-First-Search,BFS) 图的D
阅读全文
摘要:参考:https://blog.csdn.net/beautyofmath/article/details/48184331 https://blog.csdn.net/ecjtu_yuweiwei/article/details/47282457 https://blog.csdn.net/lee
阅读全文
摘要:参考: 动态规划算法——知识点总结 动态规划算法——C++实现经典案例——初级 教你彻底学会动态规划——入门篇
阅读全文
摘要:参考: 常见排序算法C++总结 各种排序算法的总结 冒泡、插入、选择等容易理解的排序思路 总结: Sort 排序算法 c++ 插入排序算法 1、插入排序 稳定 时间复杂度O(n×n),空间复杂度O(1)。 两根指针,分别指向有序区最后一个元素和无序区第一个元素。 代码: 2、冒泡排序 稳定 时间复杂
阅读全文
摘要:参考:https://blog.csdn.net/morewindows/article/details/6684558 正如文中所说,最好能用自己的话总结算法过程(思路),这样印象深刻,有助于理解。 快排序也称为分治法,更恰当地说是挖坑填数+分治法。 挖坑填数: 设置头尾两个指针,初始i=0,j=
阅读全文
摘要:1 https://blog.csdn.net/sinat_38052999/article/details/73303111 2 https://blog.csdn.net/feizaosyuacm/article/details/54919389 3 https://blog.csdn.net/
阅读全文