时间复杂度
时间复杂度
算法: 解决问题的步骤, 解决问题的有限执行语句序列
什么好的算法??
耗时少,占用空间少的算法是好算法.
算法时间评估前提:数据量相同, 算法的语句执行时间默认相同,最后评估算法的语句执行次数
常见的大O记法
常量阶:O(1)
线性阶:O(n)
平方阶:O(n^2)
指数阶:O(2^n)
对数阶O(log_2N)
线性对数阶O(Nlog_2N)
void bubble1(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++) // 2n+1 次
for(j=0;j<n-i;j++) // n-1 + n-2 + n- 3 + ... + 1 = (n - 1 + 1)/2 = n/2 n^2/2次
if (a[j]>a[j+1]) // n^2/2 次
{
temp=a[j]; // 次
a[j]=a[j+1]; // 次
a[j+1]=temp; // 次
}
for(i=0;i<n;i++) // n 次
printf(“%d”,a[i]); // n 次
}
最好的情况 f(n) = 2n+1 + n^2 + 2n T(n) = O(n^2)
最坏的情况 f(n) = 2n+1 + n^2/2 + 2n^2 + 2n T(n) = O(n^2)
学如逆水行舟,不进则退。
博客园技术交流群 群 号:1073255314
(本群没人,刚刚建立 -_-!!! )