算法分析

无论是在设计还是在应用一种广泛认可的算法时,我们必须了解这种算法的性能如何。算法的性能可以通过很多方面评判,但是通常我们最关心的算法是运算速度。但有些时候,如果一种算法消耗了大量的存储空间,那么我们也要关注算法对内存空间的要求。不管如何,都要一种标准和确定的方法来确定算法的性能。

之所以要了解算法的性能,去原因是很多方面的。例如:当要解决一个问题时,有很多算法可供选择,理解算法的性能有助于区分它们,如果了解每种算法的性能就能够有效地帮助我们解决问题。举例来说,垃圾回收算法,它用来回收堆上分配的动态存储空间(见第3章),并且需要相当长的时间来运行。认识到这点之后,我们就能非常注意只在适当的时候运用此算法,就像LISP和Java所做的那样。

本章内容包括:

最坏情况分析

这是大多数算法都采用的评估方法。在其他情况下,我们可能会考虑算法的平均情况和最佳情况。但是,对最坏情况的分析同样会带来一些好处。

O表示法

这是表示算法性能的最为常用的正式方法。在一定的条件因素下,O表示法指明一个函数的上限。

计算的复杂度

资源消耗的大小往往与算法所需要处理的数据量地方哦大小相辅相成。O表示法可以很好表示一个算法的复杂度。

最坏情况分析

在所有的情况下,绝大多数算法都会表现出不同的性能;并且,随着传人数据的不同,算法的表现也不相同。通常用来判断性能的三种情况是:最佳情况、平均情况与最坏情况。对于任何算法来说,理解每种情况是如何生产的对于分析算法来说非常重要,因为算法在不同的情况下性能差异可能很大。看一种线性收索的简单算法。线性搜索是一种自然的但效率低下的搜索技术,它简单地从数据集的头部顺序遍历到尾部。在最佳情况下,要查找的元素处于数据集的第一个位置,所以在仅仅遍历一个元素之后就找到想查找的元素,然而,在最坏情况下,要查找的元素处于数据集的最后一个位置,所以必须在遍历完所有的元素之后才能找到要查找的元素。在平均情况下,可能在数据集的中间某一个位置找到元素。

c语言十七算法,算法精解十七(C语言版)相关推荐

  1. 河南理工大学c语言程序第六章答案,河南理工大学C语言课后习题答案精解第六章..ppt...

    河南理工大学C语言课后习题答案精解第六章. 选择题 (1) C语言中一维数组的定义方式为:类型说明符 数组名 A. [整型常量]B. [整型表达式] C. [整型常量]或[整型常量表达式]D. [变量 ...

  2. JavaScript 编程精解 中文第三版 零、前言

    零.前言 原文:Introduction 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> We think ...

  3. JavaScript 编程精解 中文第三版 二十、Node.js

    二十.Node.js 原文:Node.js 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> A stude ...

  4. JavaScript 编程精解 中文第三版 十三、浏览器中的 JavaScript

    十三.浏览器中的 JavaScript 原文:JavaScript and the Browser 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaSc ...

  5. JavaScript 编程精解 中文第三版 十二、项目:编程语言

    十二.项目:编程语言 原文:Project: A Programming Language 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript ...

  6. JavaScript 编程精解 中文第三版 七、项目:机器人

    七.项目:机器人 原文:Project: A Robot 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> ...

  7. JavaScript 编程精解 中文第三版 六、对象的秘密

    六.对象的秘密 原文:The Secret Life of Objects 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 ...

  8. JavaScript 编程精解 中文第三版 九、正则表达式

    九.正则表达式 原文:Regular Expressions 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> ...

  9. JavaScript 编程精解 中文第三版 三、函数

    三.函数 原文:Functions 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> 人们认为计算机科学是天 ...

  10. JavaScript 编程精解 中文第三版 十八、HTTP 和表单

    十八.HTTP 和表单 原文:HTTP and Forms 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了<JavaScript 编程精解(第 2 版)> ...

最新文章

  1. 基于深度学习的自然语言处理
  2. Nginx强制https访问
  3. 让Web站点崩溃最常见的七大原因
  4. python+BeautifulSoup+多进程爬取糗事百科图片
  5. JUnit3 结合一个除法的单元测试说明Assert.fail()的用法
  6. linux服务器 远程桌面,Linux 远程桌面的两种方式
  7. linux-安装mysql-rpm方式
  8. PCL——快速邻域搜索
  9. python精彩编程200例-Python趣味编程与精彩实例
  10. Makefile之 .PHONY 作用
  11. 响应式网站关于资源跨域问题
  12. ValueError: This model has not yet been built. Build the model first by calling `build()` or calling
  13. linux的系统监视器图片_Linux中一个高效的资源监控器Bpytop
  14. idea 远程调试 springboot
  15. 程序员必备的画图工具汇总
  16. java poi合并单元格后内容无法显示
  17. 使用驱动器中的光盘之前需要将其格式化怎么弄
  18. 实验五 集线器和交换机的区别
  19. BZOJ3420: Poi2013 Triumphal arch
  20. 软件构造笔记——Rep Invariantand Abstraction Function

热门文章

  1. vlfeat工具包的MATLAB安装
  2. 后台管理系统 – 权限管理
  3. AIR移动平台打开图片文件
  4. 手把手教你学单片机,学完马上能自己编写开发程序
  5. EXCEL 数据透视表的制作
  6. 操作系统课程设计之Pintos
  7. 系统调用 操作系统课程设计 Linux内核编译 centos Ubuntu
  8. Matlab 移动通信原理-扩频通信系统仿真实验(扩频通信系统的多用户数据传输、利用蒙特卡罗仿真方法对扩频增益进行性能仿真)
  9. 蓝桥杯官网练习系统基础练习(十一)
  10. 电脑长时间不用的文件找不到怎么恢复