数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界

这篇具有很好参考价值的文章主要介绍了数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

2.1.概述

2.2.时间复杂度的计算

2.2.1.渐进复杂度

2.2.2.渐进上界

2.2.3.渐进下届

2.2.4.复杂度排序

2.2.5.举几个例子


2.1.概述

算法的基本定义:

求解问题的一系列计算或者操作。

衡量算法性能的指标:

  • 时间复杂性
  • 空间复杂性

这两个指标里最有用的是时间复杂度,平时谈的算法复杂度一般指的就是时间复杂度。

空间复杂性:

算法执行所用的空间。

时间复杂性:

用time的缩写T表示算法执行所需要的时间,这里的时间指的不是传统意义上时分秒的时间,而是将一步操作抽象成一个单位时间,所以算法的时间复杂度里的时间可以理解为所要执行的步骤的数量,即操作次数。

时间复杂性分为,最好时间复杂性、最坏时间复杂性、平均时间复杂性。这里面最有用的指标是最坏时间复杂性,它标识了一个算法执行的最差效率,要是它是能接受的,那么这个算法的执行效率就不用担心了。

2.2.时间复杂度的计算

2.2.1.渐进复杂度

时间复杂度是随输入规模变化而变化的一个值,这种关系不难看出是一个函数关系,所以时间复杂度的计算其实就是推导出当前算法和输入规模之间的这个关系函数。这个关系函数可以是根据算法的具体步骤一步步相加最后推到出来的详细的一个函数表达式,但是其实我们知道时间复杂度函数一定是一个自变量为输入规模n的单调递增的一元函数。这种单调递增函数当自变量趋近于无穷大(即+∞)时,函数表达式里的常数项和阶数不是最高的项对变化来说是可以忽略不记的,所以我们用渐进复杂度就可以表示当输入规模趋于无穷大时候的时间复杂度。

渐进复杂性是算法复杂度的一种简化表示,即算法的复杂度可以表示为当输入规模趋于+∞时,变化最快的部分。假设T(n)是算法的时间复杂度函数,t(n)是算法的渐进复杂度,可以得到以下等式:

数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界

以上等式之所以成立不难推出,因为t(n)是T(n)中变化最快的部分,T(n)减去变化快的部分与T(n)的比值必然是随着n趋近于∞的时候,趋近于0的。

2.2.2.渐进上界

渐进上界,即当前算法在输入规模趋近于+∞时,时间复杂度不会超过的一个函数值。用大O表示,这种表示是抽象的、简介的、只保留重点因素的,一般我们说算法复杂度说的就是大O表示的渐进时间复杂度的上界。

渐进上界的定义:

设f和g是定义为自然数集N上的函数,若存在正数c和n0,使得对一切n≥n0有:

0≤f(n)≤cg(n)

成立,则称f(n)的渐进上界是g(n),记作:

f(n)=O(g(n))

2.2.3.渐进下届

下界,即当前算法在输入规模趋近于+∞时,前算法运行时间的下限,采用大Ω符号来表示。

渐进上界的定义:

设f和g是定义为自然数集N上的函数,若存在正数c和n0,使得对一切n≥n0有:

0≤cg(n)≤f(n)

成立,则称f(n)的渐进下界是Ω(n),记作:

f(n)=Ω(g(n))

2.2.4.复杂度排序

算法的时间复杂度最后表示出来一定是一个自变量为输入规模n的一元函数,这个一元函数还一定是个基本初等函数,基本初等函数无非就六种,所谓的复杂度排序其实也就是六种基本初等函数在自变量趋近于无穷大时的变化率:

常数级、对数级、线性级、多项式级是能接受的范围,

指数级、阶乘级是灾难性的。

数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界

2.2.5.举几个例子

O(N)的时间复杂度:

for(i=1; i<=n; ++i)
{
   j = i;
   j++;
}

O(logN)的时间复杂度:

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

O(n²) 的时间复杂度:文章来源地址https://www.toymoban.com/news/detail-514831.html

for(x=1; i<=n; x++)
{
   for(i=1; i<=n; i++)
    {
       j = i;
       j++;
    }
}

到了这里,关于数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】---时间复杂度与空间复杂度

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 · 时间复杂度的定义

    2024年02月15日
    浏览(53)
  • 数据结构——时间复杂度和空间复杂度

    1.算法效率 2.时间复杂度 3.空间复杂度 4. 常见时间复杂度以及复杂度oj练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢?比如对于以下斐波那契数的计算 我们看到虽然用递归的方式实现斐波那契很简单,但是简单一定代表效率高吗? 我们接着往下看。

    2024年02月13日
    浏览(49)
  • 数据结构入门 — 时间复杂度、空间复杂度

    数据结构_空间复杂度_时间复杂度讲解_常见复杂度对比 本文介绍数据结构中的时间复杂度和空间复杂度 ***文章末尾,博主进行了概要总结,可以直接看总结部分*** 博主博客链接:https://blog.csdn.net/m0_74014525 点点关注,后期持续更新系列文章 算法效率指的是算法在处理数据时

    2024年02月13日
    浏览(54)
  • 数据结构——时间复杂度与空间复杂度

    目录 一.什么是空间复杂度与时间复杂度 1.1算法效率 1.2时间复杂度的概念 1.3空间复杂度的概念 二.如何计算常见算法的时间复杂度 2.1大O的渐近表示法  使用规则 三.如何计算常见算法的空间复杂度 3.1 大O渐近表示法 3.2 面试题——消失的数字  3.3 面试题——旋转数组 分为两

    2024年02月07日
    浏览(46)
  • 【数据结构】时间复杂度与空间复杂度

    在学习C语言的时候,大多数的小伙伴们并不会对算法的效率了解,也许算法也是一个陌生的领域,当进入了数据结构这个模块,就应该对算法的效率做一个清晰的认识。但是算法的效率是什么呢?这里就引出来时间复杂度与空间复杂度的概念了。 算法效率 指的是算法解决问

    2024年02月07日
    浏览(45)
  • 数据结构:时间复杂度和空间复杂度计算

    算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度, 而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主 要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小

    2024年02月11日
    浏览(43)
  • 数据结构之时间复杂度与空间复杂度

    目录 1.算法效率 1.2算法的复杂度 1.3复杂度对于校招的重要性 ​编辑2.时间复杂度 空间复杂度: 1.1 如何衡量一个算法的好坏? 比方说我们非常熟悉的斐波拉契数列: 递归实现方式非常简洁,但一定好吗?如何衡量其好与坏? 定义: 算法在编写成可执行程序后,运行时需要

    2024年02月05日
    浏览(54)
  • 数据结构:算法(特性,时间复杂度,空间复杂度)

    算法(Algorithm)是对 特定问题求解步骤 的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。 一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。 算法必须是有穷的,而程序可以是无穷的 算法中每条指令必须有确切的含义,对于

    2024年02月06日
    浏览(57)
  • 数据结构 --- 复杂度概念及计算讲解(时间复杂度,空间复杂度)

    今天没有sao话,今天认真学习 前言: 经常刷题的人都知道,我们在解决一道题时可能有多个解法,那么如何判断那个解法才是最优解呢? 我们通常从代码的两个方面进行判断:1.时间 2.空间。 –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀

    2024年03月22日
    浏览(47)
  • 【数据结构和算法】时间复杂度和空间复杂度

    目录   一、前言 二、时间复杂度 2.1时间复杂度表示形式 2.1.1规则: 3.1如何计算时间复杂度 3.1.1线性阶 3.1.2平方阶 3.1.3对数阶 常见的时间复杂度排序: 三、空间复杂度 3.1Java的基本类型内存占用 数据结构和算法是程序的灵魂,这是某位程序员大佬所言,学习了这门,我们便可

    2023年04月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包