算法和算法分析_算法与算法分析-程序员宅基地

技术标签: 学习  算法  数据结构  

目录

注:部分素材来源于我的大学老师

1.算法定义

2.算法的描述

3.算法的特性 

4.算法的评价

5.算法的效率的度量

(1)事后统计

(2)事前分析估计

6.时间复杂度的渐进表示法

语句的频度(Frequency Count )

时间复杂度T(n)按数量级递增顺序为:

​各种数量级的时间复杂度:

常用时间复杂度频率表:

 渐进空间复杂度


注:部分素材来源于我的大学老师

1.算法定义

一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列

2.算法的描述

自然语言  流程图  程序设计语言  伪码

3.算法的特性 

1.输入     有0个或多个输入  

2.输出     有一个或多个输出(处理结果)  

3.确定性  每步定义都是确切、无歧义的  

4.有穷性  算法应在执行有穷步后结束  

5.有效性  每一条运算应足够基本

4.算法的评价

1.正确性

2.可读性

3.健壮性

4.高效性(时间代价和空间代价)

5.算法的效率的度量

1.算法效率:用依据该算法编制的程序在计算机上执行所消耗的时间来度量

2.衡量算法效率的方法:事后统计 事前分析估计    

(1)事后统计

利用计算机内的计时功能,不同算法的程序可以用一组或多组相同的统计数据区分  

缺点:

>>必须先运行依据算法编制的程序

>>所得时间统计量依赖于硬件、软件等环境因素,掩盖算法本身的优劣  

(2)事前分析估计

 一个高级语言程序在计算机上运行所消耗的时间取决于:    

>> 依据的算法选用何种策略      

>> 问题的规模      

>> 程序语言      

>> 编译程序产生机器代码质量      

>> 机器执行指令速度           

同一个算法用不同的语言、不同的编译程序、在不同的计算机上运行,效率均不同,———使用绝对时间单位衡量算法效率不合适

6.时间复杂度的渐进表示法

1.算法中基本语句重复执行的次数问题规模n的某个函数f(n),算法的时间量度记作: T(n)=O(f(n))  

>>算法中重复执行次数和算法的执行时间成正比的语句 对算法运行时间的贡献最大

>>n越大算法的执行时间越长

     排序:n为记录数

     矩阵:n为矩阵的阶数

     多项式:n为多项式的项数

     集合:n为元素个数

     树:n为树的结点个数

     图:n为图的顶点数或边数

2.数学符号“O”的定义为:

    若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n) = O(f(n))表示存在正的常数C和n0,使得当n≥n0时都满足0≤T(n)≤Cf(n)。

表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同,称渐近时间复杂度

语句的频度(Frequency Count )

重复执行的次数:n*n; T( n ) = O ( n ^2) 即:矩阵加法的运算量和问题的规模n的平方是同一个量级

n * n阶矩阵加法: 
for( i = 0; i < n; i++)     
    for( j = 0; j < n; j++)
         c[i][j] = a[i][j] + b[i][j];

分析算法时间复杂度的基本方法:

>>找出语句频度最大的那条语句作为基本语句

>>计算基本语句的频度得到问题规模n的某个函数f(n)

>>取其数量级用符号“O”表示

时间复杂度是由嵌套最深层语句的频度决定的

 

 当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊

时间复杂度T(n)按数量级递增顺序为:

 各种数量级的时间复杂度:

常用时间复杂度频率表:

 渐进空间复杂度

1.空间复杂度:算法所需存储空间的度量,记作:    S(n)=O(f(n))            

>>其中n为问题的规模(或大小)

2.算法要占据的空间

>>算法本身要占据的空间,输入/输出,指令,常数,变量等

>>算法要使用的辅助空间

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_62670778/article/details/126807001

智能推荐

一文详解机器人标准D-H参数与改进型D-H参数_标准dh参数-程序员宅基地

该文章详解了机器人的标准D-H参数和改进型D-H参数,介绍了关节角、偏置距离、连杆长度和连杆扭角的概念,以及坐标系的建立和改进DH参数的具体数值。

我是如何十天学会C++_十天快速学习c++-程序员宅基地

文章浏览阅读588次。注意!注意!注意!是学会,只是初步掌握!作为一名非科班出身的程序员,所有的计算机语言对我来说是非常陌生和困难的!闲话少叙,十天时间里我把《21天学通C++》看了两遍,白天晚上加班加点的看书敲代码练习,看书的效果肯定是不如自己去敲去练习的,所以给后来者忠言:一定要敲代码敲代码敲代码!重要的事情说三遍!..._十天快速学习c++

MCS-51单片机的串行口及串行通信技术_方式0字符(帧)的格式图-程序员宅基地

文章浏览阅读8k次,点赞4次,收藏19次。数据通信的基本概念串行通信有单工通信、半双工通信和全双工通信3种方式。单工通信:数据只能单方向地从一端向另一端传送。例如,目前的有线电视节目,只能单方向传送。半双工通信:数据可以双向传送,但任一时刻只能向一个方向传送。也就是说,半双工通信可以分时双向传送数据。例如,目前的某些对讲机,任一时刻只能一方讲,另一方听。全双工通信:数据可同时向两个方向传送。全双工通信效率最高,适用于计算机之间的通信。此外,通信双方要正确地进行数据传输,需要解决何时开始传输,何时结束传输,以及数据传输速率等问题,_方式0字符(帧)的格式图

无人驾驶技术——Radar雷达_无人驾驶radar-程序员宅基地

文章浏览阅读3.5k次。文章目录Radar传感器雷达工作原理雷达的结构Radar vs Lidar不同级别自动驾驶中radar的使用数量L0 无自动化L1 驾驶支援L2 部分自动化L3 有条件自动化L4 高度自动化L5 完全自动化上一篇文章大概介绍了无人驾驶领域里的传感器,以及相应的使用场景,这一篇主要是针对Radar做了更详细的学习,现在整理笔记如下。图片均来源于网络,如有侵权,请联系删除。Radar传感器雷达..._无人驾驶radar

1066 图像过滤,java后端工程师面试题-程序员宅基地

文章浏览阅读510次,点赞19次,收藏14次。分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

卷积神经网络(convolutional neural network, CNN)-程序员宅基地

文章浏览阅读6.2w次,点赞137次,收藏1.1k次。基本定义卷积神经网络(convolutional neural network, CNN),是一类包含卷积计算且具有深度结构的前馈神经网络。卷积神经网络是受生物学上感受野(Receptive Field)的机制而提出的。卷积神经网络专门用来处理具有类似网格结构的数据的神经网络。例如,时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格) 和图像数据(可以看作是二维的像素网格)。1.卷积层(convolutional layer)作用:特征提取卷积层内部包含多个卷积核,组成卷积核的每个元素都_卷积神经网络

随便推点

解决PyCharm鼠标右键不显示Run Unittests 解决方法_unittest执行代码不显示run"unittest in-程序员宅基地

文章浏览阅读5.6k次。在pycharm上运行python代码的时候,代码没有错误,但是执行会和我们预想的不一样。执行代码的时候会出现“Run 'Unittests for 文件名称”第一步:有效的解决的办法Run——Edit Configurations第二步:点击运行的文件,点击上面的‘-’第三步:点击选择上面的python,点进“+”,然后选择python第四步:点击需要选择的pyt..._unittest执行代码不显示run"unittest in

SGX-用于独立执行的创新指令集和软件模型(翻译)-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏8次。用于独立执行的创新指令集和软件模型本文译自“Innovative Instructions and Software Model for Isolated Execution”,原文地址:原文地址摘要多年来PC社区一直努力提供开放平台下的安全解决方案,当前英特尔开发了创新技术,使软件开发人员能够在开放平台上开发和部署安全的应用程序。该技术使得应用在原生操作系统环境下执行,并能够同时保持其机密...

算法_python分析算法-程序员宅基地

文章浏览阅读9.2w次,点赞6次,收藏28次。1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。_python分析算法

阿里资深架构师整理出来的一份Java核心知识点分享给大家.pdf-程序员宅基地

文章浏览阅读7.1k次。一份整理的蛮不错的Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。获取方式:关注公众号:JavaAC,获取(粉丝福利)image.pngimage.pngimage.png...

沃趣微讲堂索引| PXC、MGC&amp;MGR原理与实践对比-程序员宅基地

文章浏览阅读1.1k次。讲师 | 罗小波·沃趣科技高级数据库技术专家出品 | 沃趣科技 讲师介绍 - 罗小波 - 沃趣科技高级数据库技术专家IT从业多年,历任运维工程师,高级运维工程师,运维经理...

C语言用指针实现两个数组值互换_用指针的方法,完成将数组两两相邻元素互换-程序员宅基地

文章浏览阅读2w次,点赞6次,收藏26次。C语言用指针实现两数组的值互换#include <stdio.h>#define N 10void ReadData(int a[], int n);void PrintData(int a[], int n);void Swap(int *x, int *y);int main(){ int a[N], b[N], i,n,k; printf("Input arra_用指针的方法,完成将数组两两相邻元素互换