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

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

目录

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

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

智能推荐

wxWidgets:常用表达式_wxwidget 正则表达式 非数字字符-程序员宅基地

文章浏览阅读282次。wxWidgets:常用表达式wxWidgets:常用表达式不同风味的正则表达式转义Escapes元语法匹配限制和兼容性基本正则表达式正则表达式字符名称wxWidgets:常用表达式一个正则表达式描述字符的字符串。这是一种匹配某些字符串但不匹配其他字符串的模式。不同风味的正则表达式POSIX 定义的正则表达式 (RE) 有两种形式:扩展正则表达式(ERE) 和基本正则表达式(BRE)。ERE 大致是传统egrep 的那些,而 BRE 大致是传统ed 的那些。这个实现增加了第三种风格:高级正则表达式_wxwidget 正则表达式 非数字字符

Java中普通for循环和增强for循环的对比_for循环10万数据需要时间-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏11次。Java中普通for循环和增强for循环的对比_for循环10万数据需要时间

学习PCB设计前的知识扫盲_pcb端子设计基础知识-程序员宅基地

文章浏览阅读2.7k次,点赞13次,收藏97次。0.工厂制作PCB线路板流程1.PCB的结构铜层阻焊丝印本质(PCB画电路板到底在画什么)基础工艺指标2.PCB图中的元素元素布局布线叠层设计3.PCB的设计依据原理图原理图元件库4.PCB的设计流程——总结_pcb端子设计基础知识

Python读取Excel内容;将读取的数据转换为list类型便于切片处理;列表的操作方法;pandas处理DataFrame类型数据;pandas操作;Python几种取整的方法_pandas excel list-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏19次。Python读取Excel内容;将读取的数据转换为list类型便于切片处理;列表的操作方法;pandas处理DataFrame类型数据_pandas excel list

nginx日志与监控,日志分析_nginx的日志分析-程序员宅基地

文章浏览阅读4.6k次。在分析服务器运行情况和业务数据时,nginx日志是非常可靠的数据来源,而掌握常用的nginx日志分析命令的应用技巧则有着事半功倍的作用,可以快速进行定位和统计。下面是自己在分析nginx日志时常用命令的一些总结。1.利用grep ,wc命令统计某个请求或字符串出现的次数比如我要统计GET /task/showContent接口在某天的调用次数,则可以使用如下命令: cat _nginx的日志分析

ECharts--中国地图(无敌详细)_echarts中国地图-程序员宅基地

文章浏览阅读5.4w次,点赞64次,收藏262次。使用Echarts绘制中国地图,其中地图点信息由JSON文件编写,前端html直接从JSON文件中读取地区数据,渲染到前端即可。详细介绍用到的各个功能!代码直接复制运行即可!_echarts中国地图

随便推点

JVM常用调优参数 ——JVM篇_jvm调优-程序员宅基地

文章浏览阅读1.9w次,点赞50次,收藏366次。JVM常用性能调优参数详解​ 在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。一、性能调优​ 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等等。​ 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以下步骤进行:明确优化目标发现性能瓶颈性能调优通过监控及数据统计工具获得数据确认是否达到目标二、何时进_jvm调优

三级嵌入式准备(二)_八个gpio引脚最多构成几个按键-程序员宅基地

文章浏览阅读435次,点赞3次,收藏7次。转载来源为https://blog.csdn.net/ReCclay/article/details/79439686 1、嵌入式系统的CPU主要使用的有DSP、ARM以及FPGA。2、DSP适用于数字信号处理的微处理器支持单指令多数据(DIMD)并行处理的指令显著提高音频、视频等数字信号的数据处理效率3、片上系统SOC已成为嵌入式处理器芯片的主流发展趋势它是..._八个gpio引脚最多构成几个按键

OpenStack的容器服务体验-程序员宅基地

文章浏览阅读70次。magnum 是用于 OpenStack 的容器服务。它有以下特点:抽象的容器、节点、服务等集成了用于容器技术的Kubernetes和Docker集成了多租户安全的 Keystone继承了k8s多租户网络安全的 Neutron环境准备在VMware Workstations建台虚拟机,Ubuntu 14.04 LTS,..._openstack 安装好没有容器服务

HDU - 2209 翻纸牌游戏(贪心)_hdu 2209-程序员宅基地

文章浏览阅读420次。 HDU - 2209 翻纸牌游戏 当前的这张牌是否翻转取决于它的前一张牌是否朝上,如果朝上,不翻转,朝下,则翻转,这是贪心的思想,但是,对于第一张牌来说,它的前面没有牌了,所以可以翻转,也可以不翻转,分两种情况来判断,参考的别人的代码 #include&lt;stdio.h&gt;#include&lt;algorithm&gt;#include&lt;string.h&gt;u..._hdu 2209

mysql异常代码c0000005_win7系统因0xc0000005错误导致应用程序无法正常启动的解决方法...-程序员宅基地

文章浏览阅读2k次。很多小伙伴都遇到过win7系统因0xc0000005错误导致应用程序无法正常启动的困惑吧,一些朋友看过网上零散的win7系统因0xc0000005错误导致应用程序无法正常启动的处理方法,并没有完完全全明白win7系统因0xc0000005错误导致应用程序无法正常启动是如何解决的,今天小编准备了简单的解决办法,只需要按照1、右键点击要运行的软件或游戏,在右键菜单中选择“兼容性疑难解答”; 2、让系..._mysql 0xc0000005

UNIX环境高级编程_标准io创建空头文件-程序员宅基地

文章浏览阅读492次。unix环境高级编程笔记_标准io创建空头文件