博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法分析
阅读量:5094 次
发布时间:2019-06-13

本文共 1073 字,大约阅读时间需要 3 分钟。

写简历的时候,填写学过的课程,随手就写下了算法设计与分析,从来没想过为什么要起这么个名字。算法设计是给出算法的本质和设计流程,算法分析我只会几个大o,其他就不知道了。任何学科任何方向,当涉及到对一个研究对象进行评估的时候,就会出现各种各样的评估方案,即使是在算法上,即使是在每次选择题只能选几个大o的问题上。

给定一个归并排序,首先分解,分解到最底层,排序,之后归并;在平均情况和最坏情况下的时间复杂度都是O(nlogn)。首先看下这个算法的具体过程:对于一个含有n个元素的数组,给出递归树应该有 logn层,假设叶子节点是一对元素,经过一次比较就可以排好顺序。

mergesort(datalist &L)

{

  datalist l1=left(l)

  datalist l2=right(l)

  return merge(mergesort(l1),mergesort(l2)

}

其中merge()需要o(n); 根据算法思路可以看出

T(n)=cn+2T(n/2)

T(1)=1

可以推出 o(nlogn)

或者画一个递归树,然后从叶子节点开始累加比较次数,每一层的节点数*一组merge节点的耗时,也可以得出同样结论

由于归并不存在随机选取(快速排序中的随机选择一个pivot),所以和数据初始状态无关,和过程选取无关,最好最坏最平均都是差不多的性能。

快速排序

quicksort(list)

{  partition((list)

   quicksort(leftlist)

  quicksort(rightsort)

}

在归并排序中,是近似等分两边子数组,然后在快排中,是否等分是个未知数,因此就存在了平均和最差性能的差异

算法分析一般分为概率分析 摊销分析 竞争分析

概率分析 以输入为变量,在不清楚输入的情况下,假设服从一定分布,然后分析完成任务的概率,算法的时间复杂度 空间复杂度等性能

摊销分析

和理解的平均分析还不一样,摊销分析更灵活一点,聚类分析:考虑综合消耗后,除以变量长度; 会计分析:可以积累消耗,以备后用;势能分析;摊销分析中主要考虑多次执行算法,但是和概率无关,而是从多次间的联系入手,利用限制条件 等降低消耗上限

竞争分析 给出了离线算法和在线算法的概念,通过和离线的最优算法比较,做出最佳策略,关注与最优间的差值,而不是自身从无到有的几个消耗过程。

待续

转载于:https://www.cnblogs.com/18fanna/archive/2013/05/28/3104770.html

你可能感兴趣的文章
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>