评判算法效率的标准

算法效率评判标准

时间复杂度
空间复杂度

空间复杂度

算法执行过程中所需要的额外空间与问题规模n之间的函数关系
malloc–>n
递归–>n

时间复杂度

算法中最基本的操作执行的次数与问题规模n之间的关系
运行算法所消耗的工作量与问题规模之间的函数关系,选
择一个对于所研究问题的最基本的原操作,然后去计算该
操作重复执行的次数(与问题规模相关)

时间复杂度遵循的原则

1、去掉常数
2、去掉系数
3、取最高项

举例说明:

O(1)
void fun()
{
  printf("hello world\n");
}
O(n)
void fun(int n)
{
 for(int i=0;i<n:++i)
     {
       ….
     }
}
O(n)
void fun(int n)
{
 for(int i=0;i<n:++i)
     {
       ….
     }
for(int i=0;i<n:++i)
     {
       ….
     }
}
O(n)
void fun(int n)
{
 for(int i=0;i<n:i+=2)
     {
       ….
     }
}
O(n^2)
void fun(int n)
{
 for(int i=0;i<n:++i)
     { 
     for(int i=0;i<n:++i)
     {
       ….
     }
     }
}
O(log n)
void fun(int n)
{
 for(int i=0;i<n:i*=2)
     {
       ….
     }
}
发布了17 篇原创文章 · 获赞 9 · 访问量 724

猜你喜欢

转载自blog.csdn.net/a1003032404/article/details/105137098