《入门经典》——6.29

算法分析初步:

在任何一本比较正经的算法书当中,第一章都会介绍算法正确性的证明方法和对算法复杂度的分析,因为算法本身两个重要的特性就是正确性和高效性,只有保证了这两部分方能设计出有实际利用价值的算法。

那么这篇文章通过一个简单的题目来初步探讨一下如何进行算法时间复杂度的分析。

需要指明的是,算法的复杂度分为时间复杂度和空间复杂度,而在竞赛中局限于比较抽象画的问题模型,算法分析的重点是时间复杂度。

而所谓时间复杂度O(n)的概念,就是说对于一个算法,输入其变量n,完成运算所需要执行的语句数。这里之所以是执行语句数而不是时间是因为这能够很好的排除机器运转速度自身的因素使分析结果更具有普遍意义。

Q:给出一个长度为n的序列,求最大连续和。

算法设计一个很重要的科学思想就是考虑主要矛盾忽略次要矛盾,这在给出时间复杂度的初始公式和最终的简化公式都起着重要作用。

这里我们抓住主要矛盾,即程序本身大量执行的语句,即我们设置的双层循环中对该区间和的计算,我们不难列出如下的原始公式:

这样的式子对我们说并不够直观,因此我们需要进一步的进行简化运算。这里依然会用到一个近似处理的情况,非常类似高等数学我们用到的算法。我们去掉第二和式之后,并将其展开,我们忽略的常数项、i,因为他们相对于i^2都可以忽略,因此我们可以近似的看成,最终的时间复杂度是如下的结果。

时间: 2024-10-02 20:04:37

《入门经典》——6.29的相关文章

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

”耐撕“团队 2016.3.29 站立会议

”耐撕“团队 2016.3.29 站立会议 1. 时间:20:33--21:05 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:http://www.cnblogs.com/charliePU/), Q 齐嘉亮(博客:http://www.cnblogs.com/dendroaspis-polylepis/), L  刘伟硕(博客:http://www.cnblogs.com/WeSure6/) 3.会议

Oyk的ACM刷题记录(始于2015年2月29日,可能含剧透)

Online Judge 题目序号/题目 简单大意/题解 犯2情况 2月29日 SPOJ GSS1  不带更新区间最大子段和. 线段树维护 区间从左/右开始的最大值.区间最大值.区间和. 1.输出忘了换行. 2.打错了一个字母. SPOJ GSS2 区间不重复最大子段和. 离线维护s[i..now],线段树维护 区间历史最大值.区间历史最大更新值.区间现在最大值.区间现在更新值. 询问输出区间历史最大值. 1.线段树询问忘记写pushdown了. SPOJ TEST 输出所有42前的数. 1.不

2017.06.29数据挖掘基础概念第二.三章

第二章21.研究的属性类型标称属性:值是一些符号或事物的名称,代表某种类型.编码或状态二元属性:是一种标称属性,只有两个类别或状态,又称布尔属性序数属性:是一种属性,其可能的值之间具有有意义的序或秩评定,但是相续值之间的差是未知的数值属性:是定量的,即他是可度量的量,可用整数或实数值表示(区间和比率标度)22.数据散布常见的度量量(数据如何分散的方法/识别离群点)极差 四分位数.四分位数极差.五数概括图.方差和标准差23.审视数据的图形条形.饼图.线图.分位数图.分位数-分位数图.直方图和散点图

3/29上午,3/27,和3月28下午补交

3月27上午上蔡亮老师的嵌入式课程 3月27下午 3月38下午 3/29下午第一章第二节极限

29.MAX() 函数

MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值. SQL MAX() 实例 我们拥有下面这个 "Orders" 表: O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Ca

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy

HTML5移动开发之路(29)—— JavaScript回顾4

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(29)-- JavaScript回顾4 一.变量的作用域 JavaScript脚本的执行过程分为两个阶段: 第一阶段,js引擎()先扫描整个javascript代码.当碰到<script>时,会先创建一个全局的活动对象,将<script>中出现的变量的声明,函数的定义保存在活动对 象里面.如果碰到函数,则创建对应的局部活动对象,将函数内部的变量的声明及函数的定义保存在该活动对象里面. 第二阶段

源码编译安装apache httpd-2.2.29

1.程序包编译 程序包编译安装:   (需要gcc.make工具) 建议安装  包组: development tools Application-VERSION-release.src.rpm –> 安装后,使 用rpmbuild命令制作成二进制格式的rpm包,而后再安装 源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行 源代码组织格式: 多文件:文件中的代码之间,很可能存在跨文件依赖关系 C. C++: make (项目管理器, configure –&g

29个要点帮你完成java代码优化

通过java代码规范来优化程序,优化内存使用情况,防止内存泄露 可供程序利用的资源(内存.CPU时间.网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务.优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率.本文讨论的主要是如何提高代码的效率.在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身.养成好的代码编写习惯非常重要,比如正确地.巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性