广告
返回顶部
首页 > 资讯 > 精选 >怎么理解Java算法复杂度
  • 458
分享到

怎么理解Java算法复杂度

2023-06-02 09:06:36 458人浏览 八月长安
摘要

本篇内容主要讲解“怎么理解Java算法复杂度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Java算法复杂度”吧!大O符号衡量时间复杂度通常使用”大O符号“。什么是大O符号?我们需要先看

本篇内容主要讲解“怎么理解Java算法复杂度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Java算法复杂度”吧!

大O符号

衡量时间复杂度通常使用”大O符号“。什么是大O符号?我们需要先看看一些数学知识:函数和极限。

2.1、数学举例:

00001. 一元二次函数f(x)=2x^2+2x+2;

00002. 当x趋于无穷大的时候,记作x—>∞。

00003. x->∞,f(x)=2x^2+2x+2 = 2x^2 = 2x^2。

上述第3项,当x无穷大的时候2x^2+2x+2约等于2x^2,在极限思想(算法分析)里面可以理解为2x^2+2x+2=2x^2。原因如下:

当x=5的时候:

2x^2+2x+2=62.

2x^2=50.

当x=500的时候:

2x^2+2x+2=501002

2x^2=250000.

通过上面的例子,继续增大x的值,甚至无穷大的时候,f(x)函数中的2x+2这一项就可以忽略不计了。所以x->∞时,(2x^2+2x+2)约等(2x^2),或者(2x^2+2x+2)=(2x^2)。并且在极限思想里面,2x^2前面的系数2也是可以省略的。也就是说x->∞的时候,2x^2~x^2。

通过极限的思想,我们将函数f(x)=2x^2+2x+2,省略剩余项为x^2。也就是说x->∞时,f(x)=2x^2+2x+2=x^2;使用大O符号表示:x->无穷大,f(x)=O(x^2)。

2.2、概念

大O是用来刻画被截断的无穷级数尤其是渐近级数的剩余项。大O符号表示函数的渐进性上界。就好比上面的数学举例,函数f(x)=2x^2+2x+2 渐进级数的剩余项就是x^2,记作O(x^2)。也就是说O(x^2)是f(x)的渐进性上界。

时间复杂度

题目:求1+2+3+……+n的和。(高斯算法)

● 初级程序员的代码:

… …

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

        sum+=i;

    }

… …

分析:

00001. 上述代码中的sum+=1执行多少次? 答案:n次。

00002. int i=1执行1次。

00003. i<=n执行n+1次。(因为for循环执行的顺序,只有i大于n时才会停止循环,所以i=n+1的时候,还会再判断一下i<=n,所以相比较而言会多执行一次)。

00004. i++执行n次。

汇总一下,上述代码执行n+1+n+1+n=3n+2次。

如果用极限思维,n->∞,3n+2 ~ 3n ~ n;记作O(n)。O(n)就是上述代码的时间复杂度。

● 高级程序员的代码:

… …

   (1+n)*n/2

… …

如上,同样的计算1加到n,采用高斯算法就简单多了。上述代码只需要执行1次,没有循环。所以时间复杂度就是O(1)。

● 小结

O(1)和O(n)的区别是什么呢?当上述”初级程序员代码“和”高级程序员代码”中的变量n不断增大的时候,高斯算法的时间复杂度基本不变,还是O(1)。但是“初级程序员代码”的时间复杂度就会增加。

对于计算机来说,高斯算法求解1连续加到n的计算速度远远大于for循环的速度。速度越快,系统的性能就会越好。

到此,相信大家对“怎么理解Java算法复杂度”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么理解Java算法复杂度

本文链接: https://www.lsjlt.com/news/229610.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么理解Java算法复杂度
    本篇内容主要讲解“怎么理解Java算法复杂度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Java算法复杂度”吧!大O符号衡量时间复杂度通常使用”大O符号“。什么是大O符号?我们需要先看...
    99+
    2023-06-02
  • web算法复杂度怎么理解
    本篇内容介绍了“web算法复杂度怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!算法学(Algorithmics)是设计和研究算法的科...
    99+
    2023-06-03
  • 如何理解算法的复杂度
    本篇内容主要讲解“如何理解算法的复杂度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解算法的复杂度”吧!1. Motivation - 为什么需要复杂度分...
    99+
    2022-10-19
  • 如何理解算法时间复杂度
    这篇文章主要讲解了“如何理解算法时间复杂度”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解算法时间复杂度”吧!我们可以用下面的表达式来表示:通常主要有...
    99+
    2022-10-19
  • 递归算法时间复杂度怎么算
    递归算法的时间复杂度可以通过递归树来计算。递归树是一个树形结构,表示递归算法的执行过程。树的根节点表示原始问题,每个节点表示递归调用...
    99+
    2023-05-30
    递归算法时间复杂度 递归算法
  • Java算法之时间复杂度和空间复杂度的概念和计算
    目录一、算法效率二、时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3 时间复杂度的三种情况2.4 常见时间复杂度计算举例2.4.1 例子2.4.2 冒泡排序时间复杂度...
    99+
    2022-11-12
  • 怎么用JavaScript学习算法复杂度
    这篇文章给大家分享的是有关怎么用JavaScript学习算法复杂度的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件做出响应。3、读...
    99+
    2023-06-14
  • web算法的时间复杂度和空间复杂度是什么
    这篇文章主要介绍了web算法的时间复杂度和空间复杂度是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web算法的时间复杂度和空间复杂度是什么文章都会有所收获,下面我们一起来...
    99+
    2022-10-19
  • C语言 超详细讲解算法的时间复杂度和空间复杂度
    目录1.前言1.1 什么是数据结构?1.2 什么是算法?2.算法效率2.1 如何衡量一个算法的好坏2.2 算法的复杂度2.3 复杂度在校招中的考察3.时间复杂度3.1 时间复杂度的概...
    99+
    2022-11-13
  • Java数据结构与算法系列精讲之时间复杂度与空间复杂度
    目录概述算法的衡量标准时间复杂度最优时间复杂度平均时间复杂度最坏时间复杂度O(1)O(n)O(n^2)O(logN)空间复杂度O(1)O(n)概述 从今天开始, 小白我将带大家开启 ...
    99+
    2022-11-13
  • C语言中算法的时间复杂度和空间复杂度是什么
    这篇文章给大家分享的是有关C语言中算法的时间复杂度和空间复杂度是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.前言1.1 什么是数据结构?数据结构(Data Structure)是计算机存储、组织数据的方...
    99+
    2023-06-29
  • 递归算法的时间复杂度是什么
    递归算法的时间复杂度取决于递归的深度以及每次递归的时间复杂度。如果递归的深度为n,每次递归的时间复杂度为T,那么递归算法的时间复杂度...
    99+
    2023-08-28
    递归算法
  • Java如何分析算法的时间和空间复杂度
    目录计算复杂性算法的复杂性恒定复杂性–O(1)对数复杂性–O(Log N)线性复杂度–O(N)N Log N复杂性–O(N Log N...
    99+
    2022-11-13
  • 怎么计算并测量ABAP及Java代码的环复杂度
    这篇文章主要介绍“怎么计算并测量ABAP及Java代码的环复杂度”,在日常操作中,相信很多人在怎么计算并测量ABAP及Java代码的环复杂度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么计算并测量ABAP...
    99+
    2023-06-04
  • java算法题解LeetCode35复杂链表的复制实例
    目录题目示例 1:示例 2:示例 3:示例 4:解题思路题目 AC 剑指 Offer 35. 复杂链表的复制请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中...
    99+
    2023-01-05
    java算法复杂链表复制 java LeetCode
  • 算法与数据结构之如何理解时间与空间复杂度
    本篇内容介绍了“算法与数据结构之如何理解时间与空间复杂度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写在...
    99+
    2022-10-19
  • 怎么理解Java优先遍历和广度优先遍历算法
    这篇文章主要讲解了“怎么理解Java优先遍历和广度优先遍历算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Java优先遍历和广度优先遍历算法”吧!深度优先遍历主要思路是从图中一个未...
    99+
    2023-06-16
  • LRU算法怎么理解
    本篇内容介绍了“LRU算法怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01、前言我们常用缓存提升数据查询速度,由于缓存容量有限,当...
    99+
    2023-06-16
  • Java编程中的索引算法实现:如何处理复杂的数据结构?
    在Java编程中,索引算法是一种非常重要的算法。索引算法可以用来处理各种复杂的数据结构,如数组、链表、二叉树等等。在本文中,我们将介绍Java编程中的索引算法实现,并通过一些示例代码来演示如何处理复杂的数据结构。 一、什么是索引算法? 索...
    99+
    2023-06-30
    索引 编程算法 并发
  • 怎么理解BiLSTM和CRF算法
    本篇内容介绍了“怎么理解BiLSTM和CRF算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.前言给定...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作