当前位置: 首页 > 编程日记 > 正文

数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf

下载

下载

第2 章 程 序 性 能

以下是本章中所介绍的有关程序性能分析与测量的概念:

• 确定一个程序对内存及时间的需求。

• 使用操作数和执行步数来测量一个程序的时间需求。

• 采用渐进符号描述复杂性,如 O、 、 、o 。

• 利用计时函数测量一个程序的实际运行时间。

除了上述概念以外,本章还给出了许多应用代码,在后续章节中将可以看到,这些代码有

很多用处。这些应用包括:

• 在一个数组中搜索具有指定特征的元素。本章中所使用的方法是顺序搜索和折半搜索。

• 对数组元素进行排序。本章给出了计数排序、选择排序、冒泡排序及插入排序的实现

代码。

• 采用Horner 法则计算一个多项式。

• 执行矩阵运算,如矩阵加、矩阵转置和矩阵乘。

2.1 引言

所谓程序性能( program performance ),是指运行一个程序所需要的内存大小和时间。

可以采用两种方法来确定一个程序的性能,一个是分析的方法,一个是实验的方法。在进行

性能分析( performance analysis )时,采用分析的方法,而在进行性能测量( p e r f o r m a n c e

m e a s u r e m e n t )时,借助于实验的方法。

程序的空间复杂性(space complexity )是指运行完一个程序所需要的内存大小。对一个程

序的空间复杂性感兴趣的主要原因如下:

• 如果程序将要运行在一个多用户计算机系统中,可能需要指明分配给该程序的内存大小。

• 对任何一个计算机系统,想提前知道是否有足够可用的内存来运行该程序。

• 一个问题可能有若干个内存需求各不相同的解决方案。比如,对于你的计算机来说,某

个C + +编译器仅需要 1 M B的空间,而另一个C + +编译器可能需要4 M B 的空间。如果你的计算机

中内存少于4 M B ,你只能选择1 M B的编译器。如果较小编译器的性能比得上较大的编译器,即

使用户的计算机中有额外的内存,也宁愿使用较小的编译器。

• 可以利用空间复杂性来估算一个程序所能解决的问题的最大规模。例如,有一个电路模

拟程序,用它模拟一个有 c个元件、w个连线的电路需要 2 8 0 K + 1 0 * (c+w )字节的内存。如果

可利用的内存总量为6 4 0 K字节,那么最大可以模拟c+w ≤3 6 K 的电路。

程序的时间复杂性(time complexity )是指运行完该程序所需要的时间。对一个程序的时

间复杂性感兴趣的主要原因如下:

• 有些计算机需要用户提供程序运行时间的上限,一旦达到这个上限,程序将被强制结束。

一种简易的办法是简单地指定时间上限为几千年。然而这种办法可能会造成严重的财政问题,

因为如果由于数据问题导致你的程序进入一个死循环,你可能需要为你所使用的机时付出巨额

资金。因此我们希望能提供一个稍大于所期望运行时间的时间上限。

第2章 程 序 性 能 3 1

下载

• 正在开发的程序可能需要提供一个满意的实时响应。例如,所有交互式程序都必须提

供实时响应。一个需要 1分钟才能把光标上移一页或下移一页的文本编辑器不可能被众多的

用户接受;一个电子表格程序需要花费几分钟才能对一个表单中的单元进行重新计值,那

么只有非常耐心的用户才会乐意使用它;如果一个数据库管理系统在对一个关系进行排序

时,用户可以有时间去喝两杯咖啡,那么它也很难被用户接受。为交互式应用所设计的程

序必须提供满意的实时响应。根据程序或程序模块的时间复杂性,可以决定其响应时间是

否可以接受,如果不能接受,要么重新设计正在使用的算法,要么为用户提供一台更快的

计算机。

• 如果有多种可选的方案来解决一个问题,那么具体决定采用哪一个主要基于这些方案之

间的性能差异。对于各种解决方案的时间及空间复杂性将采用加权的方式进行评价。

练习

1. 给出两种以上的原因说明为什么程序分析员对程序的空间复杂性感兴趣?

2. 给出两种以上的原因说明为什么程序分析员对程序的时间复杂

相关文章:

GCD 容易让人迷惑的几个小问题

来源:涂耀辉 链接:http://www.jianshu.com/p/ff444d664e51 写在开头: 本文旨在阐述一些大家容易产生迷惑的GCD相关内容,如果是需要了解一些GCD概念或者基础用法,可以看看这两篇文章:GCD 扫盲篇、巧谈GCD 。…

【贪心】【codevs】1214 线段覆盖

http://codevs.cn/problem/1214/ 我去这个题。。。wa的我都没脾气了。。。 我写while(~scanf(“%d”, &n))竟然是不对的。。。 这个程序你妹多次输入是不能结束的???&#xff1f…

虚函数表剖析,网上转的,呵呵

http://www.cppblog.com/xczhang/archive/2008/01/20/41508.html C虚函数表解析(转)C中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的…

c++语言文件流,C++ IO类、文件输入输出、string流详细讲解

新的C标准中有三分之二的内容都是描述标准库。接下来重点学习其中几种核心库设施,这些是应该熟练掌握的。标准库的核心是很多容器类(顺序容器和关联容器等)和一簇泛型算法(该类算法通常在顺序容器一定范围内的元素上或其他类型的序列上进行操作)。该篇主要学习IO库。…

iOS 走近商城 APP(三 WKWebView 商品规格选择框架封装)

原文链接:http://www.jianshu.com/p/293ee1bfe104商城 —— 由 3033 分享开篇 忽然发现最近也只有值班才能写东西了,中间更新了两篇其他的断了下商城相关的文章,仔细看了看之前觉得干货太少,今天写点实际的吧,闲说少说…

c语言如何不产生僵尸进程,第三章 九析带你处理 zombie(defunct) 进程

目录1 前言2 僵尸进程2.1 进程简介2.2 僵尸进程例子2.3 僵尸进程危害3 处理僵尸进程3.1 kill 命令3.2 kill 父进程3.3 reboot3.4 magic sysrq key 方法1 前言在 centos7 跑 Docker 和 k8s 时,偶尔会出现 systemctl 失效的情况,现象如下:Faile…

音视频开发学习笔记

http://www.jianshu.com/notebooks/6409162/top

VS2010 MFC中改变static字体颜色、大小、背景颜色(自定义类),及手动关联变量的方法...

在MFC的Dialog工程中生成一个CStatic的自定义类,类名例如为:CColorStatic 定义必要的变量: protected:COLORREF m_crText; // 字体颜色COLORREF m_crBackColor; // 背景颜色HBRUSH m_hBrush; // 画刷LOGFONT m_lf; // 字体…

android 上传字符串,Android中发送Http请求(包括文件上传、servlet接收)的实例代码...

/*** 通过拼接的方式构造请求内容,实现参数传输以及文件传输* param actionUrl* param params* param files* return* throws IOException*/public static String post(String actionUrl, Map params,Map files) throws IOException {String BOUNDARY java.util.UU…

JavaScript最全编码规范

转载: JavaScript最全编码规范 类型 ●基本类型:访问基本类型时,应该直接操作类型值 ●string ●number ●boolean ●null ●undefined var foo 1; var bar foo; bar 9; console.log(foo, bar); // > 1, 9 ●复合类型:访问复合类型时&a…

源码推荐:collectionView拖拽,仿凤凰FM iOS 局部监听键盘再也不会挡住输入框

UICollectionView拖拽移动单元以及本地保存(上传者:dengqi) UICollectionView拖拽移动单元以及本地保存,可以保存你上次移动的位置。 仿映客直播导航条(上传者:Coolcool) 仿映客直播自定义TabBa…

采集练习(一) php 获得全国的小学(数据来自腾讯朋友网)

注:发现腾讯朋友网已经改版,部分参数需要自己获得修改 !!! 年前有个需求获得某省的小学数据,分析了下朋友网的小学学校发现可以获得相关数据。 如获得 湖南省郴州市宜章县的全部小学 发现网页请求的地址…

android 模板方法模式,安卓设计模式(七)模板方法模式

模板方法模式用于固定相关操作的执行流程,将具体实现延迟到子类中该系列其他文章:定义: 定义一个操作中算法的框架,而降一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.使用场景:代码重构时,模板方法是经常被用到的,将固定部分提取到父…

solr单机版的搭建

一、solr单机版的搭建 1.运行环境 solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默认提供Jetty(ja),本教va写的Servlet容器程使用Tocmat作为Servlet容器,环境如下: Solr…

android5.0后新特性修改标题头,Android5.0中Material Design的新特性

Material Design简介Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干净的排版和简单的布局,以此来突出内容。Material Design对排版、材质、配色、光效、间距、文字大小、交互方式、…

MFCard:易用的信用卡支付集成类库

原文链接:https://github.com/MobileFirstInc/MFCardMFCard:易用的信用卡支付集成类库。# 为开源点赞# —— 由 SwiftLanguage 分享MFCard is an awesome looking Credit Card input & validation control. Written in Swift 3. Demo Usage First St…

Castle ActiveRecord学习(四)延迟加载、分页查询、where条件

一、延迟加载 //用户发布的主题,一对多;Table:外键表;ColumnKey:外键;Lazy:延迟加载;Cascade:级联操作(级联删除)[HasMany(typeof(ThemeInfo), Ta…

系统吞吐量(TPS)、用户并发量、性能测试概念和公式(转载)

原文地址:http://www.ha97.com/5095.html PS:下面是性能测试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等…

android layout后还原位置,Android图片框架photoview如何记住所有状态并还原,包括缩放度,缩放后的移动的距离等等...

Android图片框架photoview如何记住状态并还原&#xff0c;包括缩放度&#xff0c;缩放后的移动的距离等等,尝试了好多方法都没有作用。private void generateImages() {for (int i 0; i < imagesEntities.size(); i) {// PhotoViewAttacher attacher;final ImagesEntity en…

Shiro安全登录框架

环境准备 本文使用Maven构建&#xff0c;因此需要一点Maven知识。首先准备环境依赖&#xff1a; Java代码 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <…

iOS自动签名打包(xcodebuild)----常用

iOS自动打包主要用xcodebuild命令, 在终端输入xcodebuild --help可以查看xcodebuild的参数。 xcodebuild具体语法&#xff1a; 无workspace的工程 xcodebuild [-project name.xcodeproj] [[-target targetname] … | -alltargets] [-configuration configurationname] [-sdk [s…

设计模式解析(五)——几种设计模式之Facade和Adapter

由于个人时间原因&#xff0c;无法详细描述这些模式&#xff0c;暂且记录下来以后慢慢补充详细。 Facade模式 Facade模式&#xff1a;关键特征 意图希望简化原有系统的使用方式。需要定义自己的接口。问题只需使用某个复杂系统的子集&#xff0c;或者&#xff0c;需要以一种特殊…

android level list,Android Drawable (levle List selector layer List)

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;管理大量备选可绘制对象的可绘制对象&#xff0c;每个可绘制对象都分配有最大的备选数量。使用 setLevel() 设置可绘制对象的级别值会加载级别列表中 android:maxL…

人脸检测流程及正负样本下载

源地址&#xff1a;http://www.thinkface.cn/thread-146-1-4.html 人脸检测做训练当然可以用OpenCV训练好的xml&#xff0c;但是岂止于此。我们也要动手做&#xff01;~首先是样本的选取。样本的选取很重要&#xff0c;找了很久才发现几个靠谱的。人脸样本&#xff1a;http://w…

源码推荐:仿写映客直播 ,快速切换主题 ,星星评分控件,表格样式,可以横向移动的表格, 仿微信键盘-

仿写映客直播&#xff08;上传者&#xff1a;五仁月饼&#xff09; 工作之余写的,基于IJKPlayer播放&#xff0c;对内存做了处理。目前已完成直播列表和直播间的搭建&#xff0c;后续还会慢慢完善。 项目地址 publishImageAndVideoAnsRecord&#xff08;上传者&#xff1a;zlj5…

希尔排序——算法系列

希尔排序&#xff1a; 插入排序的升级版&#xff0c;主要采用了分组的策略&#xff0c;采用逐渐减小步长来控制分组的大小&#xff0c;各组内采用插入排序&#xff0c;当步长减小为1的时候&#xff0c;大部分数据都已经有序&#xff0c;所以较插入排序优化了许多。 代码&#x…

android 请求方式有哪些,Android中的几种网络请求方式详解

Android应用经常会和服务器端交互&#xff0c;这就需要手机客户端发送网络请求&#xff0c;下面整理四种常用网络请求方式。java.net包中的HttpURLConnection类Get方式&#xff1a;// Get方式请求public static void requestByGet() throws Exception {String path "http…

Sqlserver的触发器的简单使用

1&#xff0c;触发器有两种 &#xff08;1&#xff09;After触发器&#xff08;之后触发&#xff09; 触发器有个好处&#xff1a;就是你之前有过什么操作他会将你的操作的数据信息完整的保存下来&#xff0c;比如你删过什么信息&#xff0c;如果用触发器&#xff0c;那么删除后…

网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

一、网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型。是一个逻辑上的定义&#xff0c;一个规范&#xff0c;它把网络协议从逻辑上分为七层&#xff0c;只要目的是为解决异种网络互连时所遇到的兼容性问题&#xff0c;其最主要的功能是…

Win8之快速关机

还在纠结如何关机吗&#xff1f;现在教你几招 1、 AltF4快捷键&#xff0c;Windows桌面下按AltF4即可弹出关机菜单&#xff08;保证无任何程序处于被选中状态&#xff0c;可以点击任务栏最右侧 来回到桌面&#xff0c;这时就没问题了&#xff09; 现在怎么关机就不用教了吧。 2…