- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章 概论 ;第1章 概论 ;第1章 概论 ;第1章 概论 ;#include stdio.h
#include time.h
clock_t start, stop; /* clock_t是clock()函数返回的变量类型 */
double duration; /* 记录被测函数运行时间,以秒为单位 */
int main ()
{ /* 不在测试范围内的准备工作写在clock()调用之前*/
start = clock(); /* 开始计时 */
function(); /* 把被测函数加在这里 */
stop = clock(); /* 停止计时 */
duration = ((double)(stop - start))/CLK_TCK;/* 计算运行时间 */
/* 其他不在测试范围的处理写在后面,例如输出duration的值 */
return 0;
} ;即使解决一个非常简单的问题,往往也有多种方法,且不同方法之间的效率可能相差甚远
解决问题方法的效率
跟数据的组织方式有关(如例1.1)
跟空间的利用效率有关(如例1.2)
跟算法的巧妙程度有关(如例1.3);第1章 概论 ;第1章 概论 ;第1章 概论 ;【定义】一个算法是解决某一类问题的步骤的描述。一般而言,算法应该符合以下五项要求:
(1) 输入:它接受一些输入(有些情况下不需要输入);
(2) 输出:至少产生一个输出;
(3) 确定性:算法的每一步必须有充分明确的含义,不可以有歧义;
(4) 有限性:算法是一个有限指令集,并一定在有限步骤之后终止;
(5) 可行性:算法的每一步必须在计算机能处理的范围之内。;〖例〗 选择法排序:把n个整数从小到大排序。;? 具体衡量、比较算法优劣的指标主要有两个:
? 空间复杂度S(n) ——根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。;第1章 概论 ;第1章 概论 ;第1章 概论 ;第1章 概论 ;第1章 概论 ;2n;?s = 微秒 = 10-6 秒
ms = 毫秒 = 10-3 秒 sec = 秒;第1章 概论 ;〖问题〗给定 n个整数(可以是负数)的序列{a1, a2, …, an} , 求函数 f(i, j) = max( 0, ) 的最大值。;算法 2;算法 3;该算法的核心思想是基于下面的事实:
如果整数序列 {a1, a2, …, an}的最大和子列是 {ai, ai+1, …, aj} ,那么必定有 对任意 i ≤ l ≤ j 都成立。
因此,一旦发现当前子列和为负,则可以???新开始考察一个新的子列。;
文档评论(0)