3. 算法效率

本文探讨了算法效率的重要性,通过分析《编程珠玑》中的问题,对比了三次方、平方算法和扫描算法。讨论了如何通过数据分组减少重复操作,以提高算法效率。最后提出扫描算法作为O(n)复杂度的解决方案,其关键在于边界不重叠的数据分组。
摘要由CSDN通过智能技术生成

解决(solve)一个问题的多个不同算法在性能上的比较,主要方法是算法时间复杂度分析,输入数据元素数量为n时,算法的时间边界是O(n),O(nlgn),平方算法O(n#2)还是O(n#3)。然而算法效率是算法操作(operate)或处理(treat)数据的重复次数最小,“优化”算法时间边界。算法效率的研究目标是程序数据,与算法分析并不相同,而且可用在程序设计上。

例题选自《编程珠玑》第8章,算法设计技术。

这个问题是一维模式识别(人工智能)中的一个问题。

输入有n个元素的向量,输出连续子向量中的最大和。向量是数学的概念,用数组表示向量,输出连续元素序列和的最大值。问题的关键是元素允许负值,若不允许负值,最大和是数组,规定所有元素是负数时,子向量最大和定义为0。

一维数组d[0..9]={31,-41,59,26,-53,58,97,-93,-23,84}。子向量最大和d[2..6]的和,187。

需要解决的关键问题是明晰子向量d[i,,j]的边界(i,j),怎么将数组分组。因此不同的分组方法组成不同的算法。主要有三次方或二次方算法,分治法--树形数据算法,O(n)算法。

3.1  三次方与二次方算法

(1)三次方算法。对任意0 <= i <= j < n,(i,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值