软件工程的目标
php
高质量软件的特征
html
渐进复杂度(asymptotic complexity)称为算法的阶次,随着问题大小的增长时增加函数的通常性质,这一性质取决于该表达式的主项,即n增长时表达式中增加最快的那一项。算法的阶次是忽略该算法的增加函数中的常量和其余次要项,只保留主项而得出的。算法的阶次为增加函数提供了一个上界。web
第二个洗盘子算法具备阶次为n^2^的时间复杂度,记为O(n^2)。第一个洗盘子的事例,其增加函数为t(n)=60n,其阶次为n,记为O(n)。算法
for (int count = 0; count < n; count++) { // 复杂度为O(1)的步骤系列 }
==eg2==若是该循环的复杂度是对数级的,则该循环是O(logn)数据结构
count = 1; while(count < n) { count *=2; //复杂度为O(1)的步骤系列 }
for(int count = 0;count < n;count++) { for(int count2 = 0;count2<n;count2++) { //复杂度为O(1)的步骤系列 } }
for(int count = 0;count<n;count++) { printsum(count); } public void printsum(int count) { int sum = 0; for(int I = 1;I<count;I++) sum += I; System.out.println(sum); }
2) 乘法规则
T(n,m) = T1(n) * T2(m) = O (f(n) * g(m))函数
3) 一个特例(问题规模为常量的时间复杂度)
在大O表示法里面有一个特例,若是T1(n) = O(c), c是一个与n无关的任意常数,T2(n) = O ( f(n) ) 则有T(n) = T1(n) * T2(n) = O ( c*f(n) ) = O( f(n) )。也就是说,在大O表示法中,任何非0正常数都属于同一数量级,记为O(1)。学习
EX 2.1:下列增加函数的阶次是多少?
a.10n^2+100n+1000
解答:阶次为n^2
b.10n^3-7
解答:阶次为n^3
c.2^n+100n^3
解答:阶次为n^3
d.n^2 ·log(n)
解答:阶次为n^2 ·log(n)优化
EX 2.4:请肯定下面代码段的增加函数和阶次设计
for(int count = 0 ; count < n ; count++) for(int count2 = 0 ; count2 < n ; count2 = count2 + 2) { System.out.println(count,count2); } }
解答:内循环循环n/2次,外循环循环n次,故增加函数为F(n)=(n^2)/2,阶次为n^2。调试
for(int count = 0 ; count < n ; count++) for(int count2 = 1 ; count2 < n ; count2 = count2 * 2) { System.out.println(count,count2); } }
解答:外层循环n次,内层循环log₂(n-1)次。故增加函数为F(n)=nlog₂(n-1),阶次为nlog₂(n-1)。
上学期的Java课没有打下坚实的基础,但我仍是王老师课上说的,亡羊补牢,为时不晚。但愿这个学期可以有始有终,努力学好专业知识,学有所用。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 8/8 |
基于评分标准,我给方艺雯的博客打分:4分。得分状况以下:
正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
感想,体会不假大空的加1分
点评认真,能指出博客和代码中的问题的加1分