第1章 简介

作者: 橡树人 | 来源:发表于2020-03-01 21:35 被阅读0次

这一章会讨论本书的主旨和目标,简短回顾下编程相关概念和离散数学。

我们将会

  • 理解一个程序在大规模输入时的性能跟中等输入规模是的性能是同等重要的。
  • 汇总下本书剩余部分所需的数学背景知识。
  • 简单回顾下递归这一概念。
  • 总结整本书使用的Java语言的若干个重要的特征。

1.1节 本书会讲什么呢内容?

本书中会看到

  • 如何估计一个有大量量输入的程序的运行时间?
  • 如何不用编码就能比较两个程序的运行时间?
  • 有哪些可显著提升程序速度和判断性能瓶颈的技术?(这些技术可帮助我们定位到值得花费精力进行优化的代码)

在许多问题里,写一个能运行的程序是不够好的。如果程序要运行在大数据集上,则该程序的运行时间就可能成为问题。

下面以选择问题和单词拼图问题为例进行说明。

选择问题

假设有N个数,想找出第k大的数。
算法一
先对将这N个数读入一个数组,然后对这个数组按照从大到小排序,最后返回排好序的数组的第k个元素即可。
算法二
先将前k个数读入一个数组,并按照由大到小的顺序排好序;
接着,一个接一个读取剩下的数。每次遇到一个新的数,如果该新数比数组的第k个元素还小,则什么都不做;否则,就在数组中找一个合适的位置插入该新数,同时从数组中删除一个元素;
当算法结束时,返回数组的第k个元素即可。
问题1 哪个算法更好?
问题2 两个算法是足够好?
答:不是足够的好,因为已知存在一组随机生成的3000万个数当k取1500万时,两个算法都不能在合理的时间内完成,都需要计算机算几天的时间。
问题3 是否存在能在合理时间内完成大数据量的该选择问题的算法?
答:存在。在本书第7章中,会给出一种算法,可在1秒钟内给出结果。

单词拼图问题

给定一张单词拼图,一个两维数组字符,和一个单词列表。拼图里单词的方向可能在水平方向上,也可能在垂直方向上,也可能在任务对角线方向上。请判断单词列表里的每个单词是否在该拼图中?

相关文章

  • MacOS UML 建模工具 OmniGraffle 教程系列_

    目录 第1章:MacOS UML 建模工具 OmniGraffle 教程系列_第1章 - 简介第2章:MacOS ...

  • MacOS UML 建模工具: OmniGraffle 教程系列

    目录 第1章:MacOS UML 建模工具 OmniGraffle 教程系列_第1章 - 简介第2章:MacOS ...

  • 【第000季】简介

    《戒为良药》是一本专业指导戒撸的书籍,目前市面上关于此类指导的书籍还很少,而中国有戒撸需求的人群是极其庞大的,很多...

  • 第1章 简介

    limma:微阵列和RNA-Seq数据的线性模型用户手册 Gordon K. Smyth, Matthew Rit...

  • 第59天《简介》

    生石花 石竹目番杏科总称,约有40多个品种。多年生肉质草本,形态奇特,花色艳丽,可爱! 雅乐之舞 马齿苋科马齿苋属...

  • 第1章 简介

    这一章会讨论本书的主旨和目标,简短回顾下编程相关概念和离散数学。 我们将会 理解一个程序在大规模输入时的性能跟中等...

  • 第1章 简介

    Perl的定义及特点 “Perl”这个词表示什么意思? 使用摘录与报表语言(Practical Extractio...

  • 第1章 简介

    本书的目标是研究一大类重要且有用的算法,即适合计算机实现的求解问题的方法。为实现该目标,本书做了以下工作: 介绍许...

  • 第1章 简介

    “软件架构师”在全球众多优秀职业排行榜都排最前面的位置。但是,当读者查看这些职业清单上的其他工作(例如护士或财务经...

  • MacOS UML 建模工具: OmniGraffle 教程系列

    目录 第1章: MacOS UML 建模工具 OmniGraffle 教程系列_第1章 - 简介第2章: MacO...

网友评论

    本文标题:第1章 简介

    本文链接:https://www.haomeiwen.com/subject/irmlkhtx.html