首页 > 编程语言 >算法-复杂度分析

算法-复杂度分析

时间:2024-09-25 23:48:31浏览次数:3  
标签:分析 arr int 复杂度 算法 时间 程序段

复杂度分析

不依赖具体的执行环境

不用具体的测试数据

在算法实现前,我们在脑海就可以评估算法的性能

评估一个算法的性能:本质上就是评估这个算法代码执行的时间

N 为数据规模

 

O复杂度表示法

表示算法的性能,通常看最差的情况,算法运行的上界

O(n)  T=5n+2

常数不重要,复杂度描述的是随着数据规模n的增大,算法性能的变化趋势

T(n)就是表示算法程序段执行的时间

n表示的是算法输入数据规模的大小

f(n)表示程序段所有语句执行的次数总和

大O表示程序段执行时间T(n)与f(n)函数的关系

 

随着数据规模n的不断增大,以上T(n)中的系数

低阶、常量对执行时间的增长趋势影响非常的小

 

 

常量阶时间复杂度

只要你的程序段执行的时间和输入数据规模没有关系的话,即使需要执行成干上万行的代码,那么你的程序时间复杂度仍然是O(1)

对数阶时间复杂度

 

 

 

 理论上我们知道对于所有底数 b>1,函数 \log_2n在大O记号下的渐近增长率是相同的,但在实际图像上,我们可以观察到它们之间的差异仅在于比例系数

 

时间复杂度分析方法

 加法法则

乘法法则

常用时间复杂度

 
阶乘(Factorial)是一个数学运算,通常表示为 n! ,指的是所有小于及等于 n 的正整数的乘积。例如,5 的阶乘(写作 5!)是 5 × 4 × 3 × 2 × 1 = 120。

最好最坏时间复杂度

 平均时间复杂度(不关心)

public boolean contains(int[]arr,int target){
    for (int i=0;i<arr.length -1j i++){
        if (arr[i]=target){
            return true;
        }
        return false;
    }
}

target在数组中和不在数组中的概率都是1/2
target在数组中每个位置的概率是1/2*1/n 

不在数组中 需要比较 n^*(1/2)

空间复杂度分析

常量空间复杂度:0(1)

public boolean contains(int[]arr,int target){
    for (int i=0;i<arr.length -1j i++){
        if (arr[i]=target){
            return true;
        }
        return false;
    }
}

  线性阶空间复杂度:O(n)

public int[]arrayCopy(int[]arr){
    int[] newArray = new int[arr.length];
    for (int i=0;i<arr.length -1;i++){
        newArray[i]=arr[i];
    }
    return newArray;
    }
}

标签:分析,arr,int,复杂度,算法,时间,程序段
From: https://blog.csdn.net/qq_26594041/article/details/142441330

相关文章

  • 【算法】C++KMP算法的简洁实现
    目录简介next数组匹配完整代码简介对于朴素的字符串匹配算法,如果想在主串中寻找到第一次出现子串的位置,需要依次枚举主串中的每一个位置作为起始位置进行匹配尝试,如果主串中存在许多与子串相似结构的部分,那么朴素算法会进行大量的无用枚举,时间复杂度非常之高。KMP算法......
  • 【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“
    【算法题】63.不同路径II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“1.题目下方是力扣官方题目的地址63.不同路径II一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格......
  • 使用AI进行需求分析的案例研究
    生成式AI的潜在应用场景似乎无穷无尽。虽然这令人兴奋,但也可能让人不知所措。因此,团队在使用这项技术时需要有明确的目标:关键是要明确生成式AI在团队工作中能产生哪些实质性影响。在软件工程中,一个引人注目的应用场景是需求分析。这是一个常常被忽视但充满挑战的环节,如果处理......
  • 【算法】笔试题记录
    哇今天做了道特别有意思的题。编程就给了两道,第一题特别简单,a、b两个数,每次选其中一个数*2,这样操作两次,问最后得到的两数之和的期望值是多少。简单吧?因为每次选择都有两种可能性,操作两次后就会有四种可能的结果(22)。其中有两个结果是重复的(2a,2b),剩下两个分别是(a,4b)和(4a,......
  • 【鸟类识别系统】+计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pyth
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作......
  • 【动物识别系统】计算机毕设项目案例+Python卷积神经网络算法+模型训练+人工智能+深度
    一、介绍动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现......
  • 求最大公约数的三种算法
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intgcdByBruteForce(inta,intb){for(inti=min(a,b);i>0;--i){if(a%i==0&&b%i==0){returni;......
  • 矿山井下/传送带堆料检测AI算法的检测作用、工作原理及其解决方案
    传送带堆料分为两种情况,一种是传送带的井下堆料检测AI算法,一种是传送带上面的堆料检测AI算法,传送带井下堆料检测AI算法是在带式输送机的漏煤下方井下安装摄像仪,通过视频分析检测井下堆煤情况,当洒煤堆积到一定程度后,智慧矿山版ai盒子自动产生报警,并语音通知值班人员,也可通过前端音箱......
  • 人员动作行为AI分析系统
    人员动作行为AI分析系统利用已有摄像头对现场人员行为进行智能分析,人员动作行为AI分析系统基于YOLO神经网络的视觉分析技术,人员动作行为AI分析系统根据现场摄像头画面人员行为进行实时分析监测,人员动作行为AI分析系统自动识别出人的各种异常行为动作,立即抓拍存档预警同步回传给后......
  • 拼多多m 端详情 滑块 分析
    声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!有相关问题请第一时间头像私信联系我删除博客!侵权或损害了你的利益头像首页联系前言这个滑块感觉有......