数据结构每日更新——第一天:算法
2018-03-19 09:07
543 查看
1.算法的特性:有穷性、确定性、可行性、输入、输出
2.算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量需求
3.算法的度量方法:事后统计方法(不科学)、事前分析估算能力
4.算法时间复杂度
推导大O阶:- 用参数1代替加法参数
- 在修改后的运行次数函数中,只保留最高阶项
- 如果最高阶存在且不是1,则除去与这个项相乘的常数
得到的结果就是大O阶
5.常数阶
int main(){ int sum=0,n=100; //一次 sum = (1+n) * n/2; //一次 printf("%d",sum); //一次 }
时间复杂度为O(1)
6.线性阶
int i; for(i=0;i<n;i++){ printf("复杂度为O(1)的程序步骤!"); }
时间复杂度为O(n)
7.平方阶
int i,j; for(i=0;i<n;i++){ for(j=0;j<n;j++){ printf("复杂度为O(1)的程序步骤!"); } }
时间复杂度为O(n^2)
第二种情况:
int i,j; for(i=0;i<n;i++){ for(j=i;j<n;j++){ printf("复杂度为O(1)的程序步骤!"); } }
这里i循环是n次,但是j循环里面逐渐减少。
i=1,j=n-1;i=2,j=n-2;……
可得到总执行次数为:n^2/
98d0
2 + n/2
所以时间复杂度为O(n^2)
8.对数阶
int count=1; while(count<n){ count = count * 2; printf("复杂度为O(1)的程序步骤!"); }
这里count每次乘以2,离n越来越近,有多少个2相乘后大于n,则会退出循环。由2^x=n得到x=log2(n)
时间复杂度为O(logn)
9.一般在没有特殊说明情况下,都是指定最坏时间复杂度
10.空间复杂度(不扩展,主要讲时间复杂度,以后再来看)
11.常见时间复杂度所耗时间排序:
相关文章推荐
- 若干数据结构 && 算法面试题【二】 (更新完毕)
- 【模板】【长期施工】算法、数据结构模板集合贴(17.6.13更新至10篇)
- python:从数据结构到高级算法(更新至2017.09.08)
- 从c小白开始自学数据结构——第一天【数组及其简单算法】
- 若干数据结构 && 算法面试题【一】(更新完毕)
- 用链表实现“啦啦啦”等算法或数据结构(持续更新)
- 数据结构和算法学习——2 时间复杂度(9.21更新完成)
- 数据结构与算法之数学计算相关(实时更新)
- 若干数据结构 && 算法面试题【四】(更新ing)
- 数据结构和算法 ---第一天
- 数据结构和算法 ---第一天
- 数据结构和算法--排序篇(一边复习一边更新)
- 算法与数据结构——更新
- 近期算法和数据结构面试题解答汇总(更新)
- 一步一步复习数据结构和算法基础-二叉排序树
- 数据结构和算法绪论
- 【数据结构与算法004】基本数据结构——树
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 一步一步复习数据结构和算法基础-插入排序(1)
- 数据结构和算法分析习题解答之二——第1章习题解答