We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作
输入、输出、有穷性、可行性、确定性
function print(){ console.log("hello") }
算法时间复杂度:在进行算法分析是,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
算法的时间复杂度,也就是算法的时间量度,记做: T(n) = O(f(n)). 它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数 注:需要知道的事执行次数==时间
这样用大写O()来体现算法时间复杂度的记法,我们称之为大O阶记法;例如O(1),O(n),O(n^2)
如何推导大O阶方法
类型
var i,j,n = 100; for(i=0;i<n;i++){ for(j=i;j<n;j++){ console.log("hello world\n") } } /* n+(n-1) + (n-1) +...+1 = n(n+1)/2 = n^2 + n/2 => 用推导大O攻略,第一条忽略,因为没有常数相加,第二条只保留最高项,所以n/2去掉;最后第三条去除与最高项相乘的常数,最后得出O(n^2) */
var i=1,n=100; while( i<n){ i = i*2 } /* => 假设有x个2相乘后大于或等于n,则退出循环; => 2^x=n => x = log(2)n所以这个循环之间复杂度为O(logn) */
The text was updated successfully, but these errors were encountered:
No branches or pull requests
算法
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作
5个基本特征
输入、输出、有穷性、可行性、确定性
算法具有0个或者多个输入
指算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。
算法设计要求
算法程序没有语法错误;
算法程序对于合法输入能够产生满足要求的输出;
对于非法输入能够产生满足规格的说明;
对于故意刁难的测试输入有满足要求的输出结果;
当输入数据不合法时,能做出相关处理,而不是产生异常、奔溃或者其他问题;
时间复杂度
算法的时间复杂度,也就是算法的时间量度,记做:
T(n) = O(f(n)).
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数
注:需要知道的事执行次数==时间
这样用大写O()来体现算法时间复杂度的记法,我们称之为大O阶记法;例如O(1),O(n),O(n^2)
如何推导大O阶方法
类型
The text was updated successfully, but these errors were encountered: