【数据结构与算法】第二章,2024年最新java面试项目经历阐述

// 算法一

public static void main(String[] args) {

int sum = 0;//执行1次

int n=100;//执行1次

sum = (n+1)*n/2;//执行1次

System.out.println(“sum=”+sum);

}

// 算法二

public static void main(String[] args) {

int sum = 0;//执行1次

int n=100;//执行1次

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

sum += i;//执行了n次

}

System.out.println(“sum=” + sum);

}

// 算法三

public static void main(String[] args) {

int sum=0;//执行1次

int n=100;//执行1次

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

for (int j = 1; j <=n ; j++) {

sum+=i;//执行n^2次

}

}

System.out.println(“sum=”+sum);

}

如果忽略判断条件的执行次数和输出语句的执行次数,那么当输入规模为n时,以上算法执行的次数分别为:

  • 算法一:3次

  • 算法二:n+3次

  • 算法三:n^2+2次

如果用大O记法表示上述每个算法的时间复杂度,应该如何表示呢?

基于我们对函数渐近增长的分析,推导大O阶的表示法有以下几个规则可以使用:

  1. 用常数1取代运行时间中的所有加法常数

  2. 在修改后的运行次数中,只保留高阶项

  3. 如果最高阶项存在,且常数因子不为1,则去除与这个项相乘的常数

所以,上述算法的大O记法分别为:

  • 算法一:O(1)

  • 算法二:O(n)

  • 算法三:O(n^2)

2、常见的大O阶
2.1、线性阶 O(n)

一般含有 非嵌套循环 涉及线性阶,线性阶就是随着输入规模的扩大, 对应计算次数呈直线增长

例如: 下面这段代码,它的循环的时间复杂度为 O(n),因为循环体中的代码需要执行n次

public static void main(String[] args) {

int sum = 0;

int n=100;

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

sum += i;

}

System.out.println(“sum=” + sum);

}

2.2、平方阶 O(n^2)

一般 嵌套循环 属于这种时间复杂度

下面这段代码,n=100,也就是说,外层循环每执行一次,内层循环就执行100次,那总共程序想要从这两个循环中出来,就需要执行100*100次,也就是n的平方次,所以这段代码 的时间复杂度是 O(n^2)

public static void main(String[] args) {

int sum=0,n=100;

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

for (int j = 1; j <=n ; j++) {

sum+=i;

}

}

System.out.println(sum);

}

2.3、立方阶 O(n^3)

一般 三层嵌套循环 属于这种时间复杂度

下面这段代码,n=100,也就是说,外层循环每执行一次,中间循环循环就执行100次,中间循环每执行一次,最内层循环需要执行100次,那总共程序想要从这三个循环中出来,就需要执行100100100次,也就是n的立方,所以这段代码的时间复杂度是 O(n^3)

public static void main(String[] args) {

int x=0,n=100;

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

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

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

x++;

}

}

}

System.out.println(x);

}

2.4、对数阶 O(logn)

int i=1,n=100;

while(i<n){

i = i*2;

}

由于每次 i*2 之后,就距离n更近一步,假设有x个2相乘后大于n, 则会退出循环。由于是2^x=n,得到x = log(2)n,所以这个循环的时间复杂度为 O(logn);对于对数阶,由于随着输入规模n的增大,不管底数为多少, 他们的增长趋势是一样的,所以我们会忽略底数

2.5、常数阶 O(1)

一般 不涉及循环操作 的都是常数阶,因为它不会随着n的增长而 增加操作次数。例如: 下述代码,不管输入规模n是多少,都执行2次,根据大O推导法 则,常数用1来替换,所以上述代码的时间复杂度为 O(1)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

《MySql面试专题》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

《MySql性能优化的21个最佳实践》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

《MySQL高级知识笔记》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

关注我,点赞本文给更多有需要的人

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

(img-NK0M1QYV-1712689804325)]

文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

[外链图片转存中…(img-GUOlSCPH-1712689804325)]

关注我,点赞本文给更多有需要的人

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-miWKnu7V-1712689804325)]

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值