09 1.4算法与算法分析(青岛大学-王卓)笔记

请注意:有的情况下,算法中基本操作重复执行的次数还随问题的输入数据集不同而不同。

例子:顺序查找,在数组a[i]中查找值等于e的元素,返回其所在位置。

for(i=0;i<n;i++)
if(a[i]==e)return i+1;//找到,则返回是第几个元素  i+1
return 0;//全部执行完,但是没有找到。n

最坏时间复杂度:即在最坏的情况下,算法的时间复杂度。

平均时间复杂度:指在所有可能输入实例在等概率出现的情况下,算法的期望运行时间。

最好时间复杂度:指在最好的情况下,算法的时间复杂度。

一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。

对于复杂的算法,可以将它分成几个容易估算的部分,然后利用O加法法则和乘法法则,计算算法的时间复杂度。

1.加法规则

T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

2.乘法规则

T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))

算法时间效率的比较

当n取的很大的时候,指数时间算法和多项式时间算法在所需要时间上非常悬殊。

复杂度由低------>高

O(1)--->O(log2(n))--->O(n)--->O(n log2(n))--->O(n^2)--->O(n^3)---->O(n^k)---->O(2^n)

渐进空间复杂度

空间复杂度:算法所需要存储空间的度量

S(n)=O(f(n))   其中n为问题的规模(或者大小)

算法要占据的空间

1.算法本身要占据的空间+输入输出+指令+常数+变量等

2.算法需要使用的辅助空间

例子:

将一堆数组a中的n个数逆序存放到原数组中。
1.第一个与最后一个交换,一共n/2次
S(n)=O(1)
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}

2.将数组的元素放到另外一个数组里面
S(n)=O(n)
for(i=0;i<n;i++)
b[i]=a[n-i-1];
for(i=0;i<n;i++)
a[i]=b[i];

总结:

抽象数据类型 = 数据的逻辑结构 + 抽象运算(运算的功能描述)

数据的逻辑结构---->数据的存储结构------>算法1....n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值