复杂度

一、引言

    一个算法是由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一问题的不同算法,通常的做法是:从算法中选取一种对于所研究的问题来说的基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量度。

    例如:

for(i=1;i<=n;i++){for(j=1;j<=n;j++){c[i][j] = 0;for(k=1;k<=n;k++){c[i][j] += a[i][k]*b[k][j];}}}

  

在两个N*N矩阵相乘的算法中,乘法运算是矩阵相乘问题的基本操作。整个算法的执行时间与该基本操作重复执行的次数n^3成正比,记做

        T(n) = O(n^3);

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作

        T(n) = O(f(n)); 

它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。

    大多数情况下,问题基本操作的原操作是最深层循环内的语句中的原操作,它的执行次数和包含它的语句的频度相同。语句的频度指的是该语句重复执行的次数,例如

1、{a++;s=0;}2、for(i=1;i<=n;i++){a++;s+=x;}3、for(j=1;j<=n;j++){for(k=1;k<=n;k++){a++;s+=x;}}

  

这三个程序的时间复杂度分别为O(1)、O(n)和O(n^2),分别成为常量阶、线性阶、平方阶。 

转载于:https://www.cnblogs.com/zhanggui/p/4644797.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几个不错的素材站

w3cplus : http://www.w3cplus.com/JQUERY插件库 jq22.com 牛客 http://www.nowcoder.com/html/aboutusjQuery之家模板之家 http://www.cssmoban.com/动效不错的&#xff1a;http://www.templatemonster.com/demo/54933.htmlhttp://www.templatemonster.com/demo/54935.htmlht…

x3-02 java_Day13 -- Java流程控制02

1. 顺序结构Java的基本结构就是顺序结构&#xff0c;除非特别指明&#xff0c;否则就按照顺序一句一句执行。是任何一个算法都离不开的一种基本算法结构。2. 选择结构if单选择结构if双选择结构if多选择结构嵌套的if结构switch多选择结构1) if单选择结构语法&#xff1a;if(布尔…

css3 多列布局使用

css3的出现&#xff0c;解决了不少前端的问题&#xff0c;比如动画&#xff0c;圆角等&#xff1b; 这里总结一下css3 的多列布局&#xff1b; w3c上给出了很多属性&#xff1b; 我们一般用到column-count、column-gap、column-width这三个属性&#xff0c; 其中column-count和…

string容量JAVA_java的StringBuilder类的长度和容量有什么区别呢?

StringBuilder是使用char[] value;存储数据的Overridepublic int length() {return count;}AbstractStringBuilder(int capacity) {value new char[capacity];}长度表示的是字符的个数&#xff0c;容量表示的是可用于最新插入字符的存储量。例如&#xff1a;StringBuilder sbn…

一个TextView使用不同的颜色

一个TextView使用不同的颜色&#xff1a; textview中首先需要已经有内容了 public static void ColorFormatTextView(TextView tv,int color,String textStr){if (TextUtils.isEmpty(textStr) || tv null|| TextUtils.isEmpty(tv.getText())) {return;}String showString tv.…

java集合的某项相加_java8实现list集合中按照某一个值相加求和,平均值等操作代码...

集合: List user = new User(); user .stream().collect(Collectors.summingInt(User::getAge)) 参数类型: summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值 summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值 summarizingLo…

SAP RFC 获取BDC 消息文本的实现

SAP RFC 获取BDC 消息文本的实现 最近做RFC时 &#xff0c;有调用一个BDC 用于 信息录入 调试程序时&#xff0c;单纯的处理正确、处理异常不能满足&#xff0c;希望获取具体的类似GUI上的提示消息 消息文本该如何获取呢&#xff1f; messtab内容&#xff1a; 初步猜测 可能是…

java script数据类型_javascript 六种数据类型

js的数据类型和常见隐式转化逻辑。一、六种数据类型原始类型(基本类型)&#xff1a;按值访问&#xff0c;可以操作保存在变量中实际的值。原始类型汇总中null和undefined比较特殊。引用类型&#xff1a;引用类型的值是保存在内存中的对象。* 与其他语言不同的是&#xff0c;Jav…

RatingBar的自定义

RatingBar的实现其实是很简单的&#xff0c;只要在xml布局文件中写就行了 范例&#xff1a; 在主布局文件中&#xff0c;只需要写<RatingBar/>即可 main.xml 1 <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"2 xmlns:tools&q…

python中什么最重要_Python 3中被忽视了的三大重要功能

全文共2201字&#xff0c;预计学习时长6分钟图源&#xff1a;unsplashPython 3上线已有一段时间&#xff0c;大多数开发人员(特别是那些首次编程的人)已经在使用它了。不过&#xff0c;你确定已经对Python 3研究透彻了吗&#xff1f;事实上&#xff0c;其中还有许多新功能对大多…

Java基础总结(一)

1. 面向对象的特征面向对象的特征包括抽象、封装、继承和多态。 抽象就是忽略一个主题中与当前目标无关的某些方面&#xff0c;以便更加充分的注意到与当前目标有关的方面。抽象并不打算了解全部的问题&#xff0c;而只是其中的一部分&#xff0c;暂时不用考虑细节。抽象包括两…

java 2分代复制垃圾回收_Java对象的后事处理——垃圾回收(二)

1 先谈Finalize()finalize()能做的所有工作&#xff0c;使用try-finally或者其他方式都可以做得更好、更及时&#xff0c;所以笔者建议大家完全可以忘掉Java语言中有这个方法的存在。——《深入理解JVM》finalize()方法确实可以实现一次对象的自救&#xff0c;但是其不确定性和…

前端学习(1555):ng-app指令

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>ng-app指令</title> </head> <!-- 需…

前端学习(1556):ng-blnd指令

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>ng-app指令</title> </head> <!-- 需…

标准输入输出重定向

程序会在运行中输出日志&#xff0c;并是通过java的日志类进行输出的。而如果关掉SSH运行程序&#xff0c;就会丢失这些信息。直观的解决办法是将输出到控制台的日志重定向到文件中&#xff0c;于是我将命令改为&#xff1a;sh auto.sh > console.txt &。不过事实并没像…

Java虚拟机学习 - 体系结构 内存模型(转载)

一&#xff1a;Java技术体系模块图二&#xff1a;JVM内存区域模型1.方法区 也称"永久代” 、“非堆”&#xff0c; 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB&#xff0c;最大值为64MB&#xff0c;可以通过-XX:PermSiz…