
数据结构与算法
文章平均质量分 78
林生时见lu
本人大一计科新生一枚
展开
-
算法学习--图论
最短路问题网络流问题匹配问题原创 2021-11-30 23:05:45 · 712 阅读 · 0 评论 -
算法学习-平摊分析
平摊分析的目的算法的时间复杂度不好分析时,将总的代价平摊到每个操作上来分析总的时间复杂度的分析方法注:都要按最坏的情况算平摊分析的常用方法聚集法:数学计算+结合具体场景更细致地分析会计法:为每种操作分配不同的平摊代价,操作被执行时,若实际代价小于分配的平摊代价,则剩余的部分作为存款存到银行里;若实际代价大于分配的平摊代价,则从银行里取出“存款”来支付不足的代价。只要保证银行里的存款永远是非负的,则所有平摊代价求和就是算法的时间复杂度的上界势能法:定义整个数据结构的势能函数。为每种操作分配不同的原创 2021-11-30 21:57:58 · 3178 阅读 · 0 评论 -
算法学习:搜索
暴力美学枚举每一个可能解,如8-puzzle,Hamiltonian环问题深度优先和广度优先BFSDFS搜索的优化爬山策略(局部贪心优化DFS)问题的引入DFS时遇到多个节点可以扩展时先扩展谁?爬山策略使用贪心方法来确定先扩展谁,是一种局部优化观念,不一定得到全局优化解Best-First策略(全局优化BFS )构造一个评价函数,在当前产生的所有节点中选择具有最小评价函数值的节点进行扩展,得到的解是全局优化解分支界限使用爬山法或者BF算法得到一个可行解,作为优化解的一个界限原创 2021-11-30 11:17:13 · 267 阅读 · 0 评论 -
算法学习-贪心
贪心算法区间问题将每个区间按右端点排序从前往后枚举每个区间,如果当前区间中已经包含点,则直接pass,否则,选择当前区间的右端点算法正确性的证明原创 2021-11-29 20:39:06 · 1954 阅读 · 0 评论 -
算法学习-动态规划
DPDP的理解方式状态表示:集合:所有选法的集合属性:状态集合里的最大值,最小值,数量2. 状态计算:集合的划分划分原则:不漏背包模型01背包二维数组# include <iostream>using namespace std;const int N=1001;int f[N][N];int v[N];int w[N];int main(){ int n,m; cin>>n>>m; for(int i=1;原创 2021-11-28 21:55:52 · 277 阅读 · 0 评论 -
排序和分治法
常见使用分治法的排序归并排序以中间元素为划分,分成两个子问题伪代码和时间复杂度快速排序确定一个数组中不大不小的数x为划分标准,将小于x的元素放到x前面,大于x的元素放到x后面,划分为两个子问题时间复杂度分析最好情况作为划分的元素选取适当,数组被分为长度大致相当的两部分,相当于每次对半分T(n)=2T(n/2)+θ(n),T(n)=O(nlgn)T(n)=2T(n/2)+\theta(n),T(n)=O(nlgn)T(n)=2T(n/2)+θ(n),T(n)=O(nlgn)最坏情况划原创 2021-11-27 17:34:00 · 284 阅读 · 0 评论 -
算法的时间复杂度分析
用增长的阶表示算法运行的效率五种阶函数同阶低阶高阶严格低阶严格高阶注:非所有函数都可比和式估计:分析代码运行时间调和级数放缩法利用前后项之比小于常数放缩一个错误的证明这里偷换了概念,注意在使用数学归纳法时,假设m=n时∃n0,cst.n>=n0、sumk=1n<=cn\exists n_0,c st . n >=n_0 、sum_{k=1}^{n}<=cn∃n0,cst.n>=n0、sumk=1n<=cn证明当m=n+1时原创 2021-11-25 12:03:22 · 425 阅读 · 0 评论 -
数据结构复习-线性表有关操作
数据结构复习-线性表有关操作1.线性表反向和逆序2.有序表的二分查找3.有序表的归并4.线性表的元素划分5.顺序表循环移位6.单向链表环问题:快慢指针7.链表求倒数第k个数,中间数8.单向链表交叉问题9.有序表的归并一,反向和逆序思路是从第二个数据节点开始每个节点先删除再头插LinkListNode* reverse(LinkListNode *head){if(!head->next||!head->next->next)return head;else原创 2021-05-23 14:46:35 · 163 阅读 · 0 评论 -
数据结构学习-二叉树的基本操作
数据结构——二叉树原创 2021-04-18 12:33:29 · 655 阅读 · 1 评论