算法系统学习-牛刀小试几个小Case(非递归算法)

简介: 该系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点

算法的空间复杂度


  1. 输入数据所占的空间
  2. 算法程序本身所占的空间
  3. 辅助变量所占的空间

拓展:

算法本身所占空间虽然和算法有关,但一般大小是相对固定的。所以在研究算法的空间复杂度时,只需分析除数据和算法本身之外的辅助空间即可。算法的空间复杂度一般指的是算法执行过程中所占的辅助空间大小,用S(n)表示,与时间复杂度一样,也可以用S(n)=O(n)表示,当然这里的n也是随着问题的规模增大,算法运行所在需存储量的增长率与g(n)的增长率相同(空间复杂度相对于时间复杂度,没那么重要)


牛刀小试


非递归算法分析

仅仅依赖于问题规模的时间复杂度,这类问题的操作都具有普遍性,也就是说对所有的数据均等价地处理。(这里问题较为容易)

Case1:

Temp =i;
i=j;
j=temp;
复制代码


分析:

以上三条单个语句的频度都是为1,该算法段的执行时间是一个与问题规模n无关的常数,所以算法的时间复杂度为常数阶 ,即T(n)=O(1);注意:只要不随问题规模n的增加而增长,即使算法中有上千条语句,时间复杂度仍然是一个比较大的常数而已。因此此类算法的时间复杂度为O(1)


Case2:

x=0;y=0;
for(k-1;k<=n;k++){
    x++;
    for(i=1;i<=n;i++){
      for(j=1;j<=n;j++){
            y++;
        }
    }
}
复制代码

分析:

当有若干个循环语句时,算法的时间复杂度是由于嵌套层数最多的循环语句中最内成循环的频度 f(n)决定的。因此该算法段的时间复杂度为 T(n)=O(n^3)


Case3:

x=1;
for(i=1;i<=n;i++){
      for(j=1;j<=n;j++){
           for(k=1;k<=n;k++){
               x++;
           }
        }
    }
复制代码

分析:

首先该算法的频度最大的语句是 x++;频度为3,从内层循环向外层循环分析该语句执行的次数为:[n(n+1)(2n+1)/6+n(n+1)/2]/2 因此结合时间复杂度的规律 T(n)=O(n^3/6+低次项)=O(n^3)

即时间复杂度为T(n)=O(n^3)


Case4:

i=1;
while(i<=n){
    i=i*2;
}
复制代码

分析:

设定以上while循环为k次,那么2^k 则2^k=n ,所以循环的次数为 log2n,因此算法的时间复杂度为O(log2n)


Case5(算法时间复杂度有时还会与输入实例的初始状态有关。):


在数值A【0,n-1】中查找给定值k的算法如下:
i=n-1;
while(i>=0 and A [i] <>k ){
    i=i-1;
    return i;
}
复制代码

分析:

该算法不仅仅与问题规模有关,还与输入的实例A的各元素取指以及k的取值有关

  1. 若A中没有与k相等的元素,这语句while的频度f(n)=n;这是最坏的情况
  2. 若A中的第一个元素等于k,这语句while的频度f(n)为常数1,这是最好的情况

在求平均情况时,一般地假设查找不同元素的概率P是相同的,则算法的平均复杂度为1/n(1+2+3+4+....+n)=n+1/n=O(n)

若查找不同元素的概率p不相同时,其算法复杂度就只能做近似分析或在构造更好的算法或存储结构后,做比较准确的分析。

目录
相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
111 55
|
15天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
96 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
3天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
22 3
|
17天前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
本文介绍了基于交替最小化(AltMin)算法的混合预编码技术在MIMO系统中的应用。通过Matlab 2022a仿真,展示了该算法在不同信噪比下的性能表现。核心程序实现了对预编码器和组合器的优化,有效降低了硬件复杂度,同时保持了接近全数字预编码的性能。仿真结果表明,该方法具有良好的鲁棒性和收敛性。
31 8
|
1月前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
17天前
|
存储 人工智能 缓存
【AI系统】布局转换原理与算法
数据布局转换技术通过优化内存中数据的排布,提升程序执行效率,特别是对于缓存性能的影响显著。本文介绍了数据在内存中的排布方式,包括内存对齐、大小端存储等概念,并详细探讨了张量数据在内存中的排布,如行优先与列优先排布,以及在深度学习中常见的NCHW与NHWC两种数据布局方式。这些布局方式的选择直接影响到程序的性能,尤其是在GPU和CPU上的表现。此外,还讨论了连续与非连续张量的概念及其对性能的影响。
41 3
|
16天前
|
机器学习/深度学习 人工智能 算法
【AI系统】内存分配算法
本文探讨了AI编译器前端优化中的内存分配问题,涵盖模型与硬件内存的发展、内存划分及其优化算法。文章首先分析了神经网络模型对NPU内存需求的增长趋势,随后详细介绍了静态与动态内存的概念及其实现方式,最后重点讨论了几种节省内存的算法,如空间换内存、计算换内存、模型压缩和内存复用等,旨在提高内存使用效率,减少碎片化,提升模型训练和推理的性能。
34 1
|
20天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
78 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
下一篇
DataWorks