遗世蒹葭~小甲鱼~数据结构和算法~算法初体验

算法初体验

int i ,sum = 0,n = 100;

for(i = 1;i<=n;i++)

{

    sum = sum + i;

}

sum = (1+n)*n/2;

算法:指令的有限序列,技巧和方式

算法特性:输入、输出、有穷性、确定性、可行性,可读性,时间效率高和存储量低

算法效率的度量方法

算法执行时间:事前分析估算方法,统计方法

1、算法采用的策略和方案

2、编译器产生的代码质量

3、问题的输入规模

4、机器执行指令的速度

算法好坏和输入规模-->算法时间

时间复杂度和空间复杂度的求解攻略

输入规模n,时间量度T(n) = O(f(n)),关注增长率,执行次数即为时间。

1、用常数1取代时间中所有的加法常数

2、在修改后的运行次数中,只保留最高阶项

3、如果最高阶项存在且不是1,则去除与这个项相乘的常数

4、得到的最后结果就是大O阶

常数阶、线性阶(O(n)),平方阶(O(n^2))嵌套,三层嵌套,立方阶,对数阶

int i = 1 ,n = 100;

while(i

{

    i = i * 2;

}

x*2 = n  x = log(2)n  O(logn)

函数调用的时间复杂度分析

1

空间复杂度:算法需要的存储空间实现,空间需求

你可能感兴趣的:(数据结构)