首页 > 编程语言 > 详细

数据结构----算法复杂度分析

时间:2021-04-15 23:32:36      阅读:25      评论:0      收藏:0      [点我收藏+]
  • 时间复杂度
  1. 常数阶
    O(1):跟问题规模没有关系
    
int i = 0;int n = 100; 
printf("test"); 
printf("test");
printf("test"); 
printf("test"); //算法时间复杂度为O(1)

  

    2、线性阶
    O(n):随着问题规模n的增大,对应的计算次数成直线增长
    
int i = 0;int n = 100; int sum = 0;
for(i=0; i<n; i++)
{
    sum = sum + i;
}
//算法时间复杂度为O(n)

  

    3、平方阶
    O(n^2):随着问题规模n的增大,对应的计算次数成抛物线增长
    
int i = 0, j = 0;int n = 100; int sum = 0;
for(i=0; i<n; i++)
{
    for(j=0; j<n; j++)
    {
        printf("ok");
    }
}
//算法时间复杂度为O(n^2)

for(i=0; i<n; i++)
{
    for(j=i; j<n; j++)
    {
        printf("ok");
    }
}//n + n-1 + n-2 + ... + 1 = n*(n+1)/2 ---> O(n^2)
//算法时间复杂度为O(n^2)

  

    4、对数阶
    O(log(n)):随着问题规模n的增大,对应的计算次数成对数线增长
    
int i = 1; int n = 100;
while(i < n)
{
    i = i * 2;
}//2^x = n --->x = log(n)
//算法时间复杂度为O(log(n))

  

    5、总结
    常用时间复杂度耗费时间从小到大排列:
    O(1) < O(log(n)) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
  • 空间复杂度
O(n)表示基本代码占据的存储空间

数据结构----算法复杂度分析

原文:https://www.cnblogs.com/jacklovezzz/p/14664255.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!