时间复杂度

本文讲述了作者在Java实习面试中遇到时间复杂度问题的经历,认识到算法的重要性,并决定从时间复杂度开始学习数据结构与算法。文章详细解释了时间频度和时间复杂度的概念,列举了不同时间复杂度级别的例子,同时强调了空间复杂度在算法分析中的意义。通过学习,作者旨在提升自己的编程能力,避免在后续的开发工作中再次遇到类似问题。
摘要由CSDN通过智能技术生成

前一段时间以为自己Java学的不错就出去面试了,打算找一个暑期实习锻炼一下自己,本来以为开发做后端Java程序员可以跳过算法这些东西,结果面试官上来就问了时间复杂度的概念,因为本科学的不是计算机专业所以直接蒙圈,也给面试官留下了很不好的印象,后面问到java集合redis等存取元素的时候,又问到了时间复杂度等概念,真是一步走不好,步步走不好,2021年暑假到了,从今天开始学习数据结构与算法,从哪跌倒就从哪爬起来,开始恶补算法和数据结构知识啦!下面步入正题:

想要了解时间复杂度,必须要了解时间频度的概念

1时间频度

时间频度:一个算法中的语句执行的次数,称为语句频度时间频度,记为T(n)。
例如:T(n)=3n 2+2n+4
特点

  1. 常数项可以忽略
  2. 低次项可以忽略
  3. 最高次项的系数可以忽略

因为当n最够大的时候,其主要作用的就是只有最高阶次。

2时间复杂度

时间复杂度:一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示。若有某个辅助函数f(n),使得当n趋于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,记为T(n)=O(f(n))称O(f(n))为算法的渐进时间复杂度,简称时间复杂度

平均时间复杂度:所有可能的输入实例均已等概的情况下该算法的运行时间。

一般情况下,所讨论的时间复杂度都是最坏情况下的时间复杂度。
例如:
T(n)=3n 2+2n+4
取辅助函数f(n)=n 2
即当n趋于无穷时T(n)/f(n)=3
故时间复杂度为:

T(n)=O(n2)

3 常见的时间复杂度(算法时间复杂度由小到大排序)

1.常数阶O(1)
复杂度不随n的变化而变化的普通简单代码语句

		int i=1;
        int j=2;
        i=i++;
        j=j++;

2.对数阶O(log2n)
底数也可以是3,4,5,10等常数,主要看具体的算法

 		int i=1;
        int n=10000;
        while(i<n){
            i=i*2;
        }

3.线性阶O(n)
一般是指一层for循环

for(int i=0;i<=n;i++){

}

4.线性对数阶O(nlog2n)
对数阶和线性阶的组合,即for循环里面嵌套一个while()

for(int i=0;i<=n;i++){
	while(i<n){
		i=i*2;
	}
}

5.平方阶O(n2)
两层for循环嵌套使用的时间复杂度,许多排序算法的时间复杂度都是平方阶。

//实现99乘法表
	int n=9;
    for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                int result=i*j;
                System.out.println(i+"*"+j+"="+result);
            }
        }

6.立方阶O(n3)
类似于平方阶,进行三层嵌套for循环
7.k次方阶O(nk)
类似于平方阶,进行k层嵌套for循环
8.指数阶O(2^n)
因为指数阶在n慢慢增大的时候,时间复杂度非常大,因此在日常使用中一定要避免使用这种算法。

4空间复杂度

空间复杂度:一个算法在运行过程中临时占有存储空间大小的度量,有的算法需要占用临时工作单元数与解决问题的规模n有关,他随着n的增大而增大,如快速排序和归并排序算法就属于这种情况。
算法分析时,更看重的是程序执行的速度,redis,memcache和有些算法(如:基数排序,桶排序)本质就是用空间换取时间。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值