第一章 算法在计算中的作用

1.1 算法


非形式地说,算法就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。

数据结构

数据结构是一种存储和组织数据的方式,旨在便于访问和修改。

1.1-1 给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子

学生时代学习成绩的排序是最常见的排序例子

1.1-2除速度外,在真实环境中还可能使用哪些其他有关效率的量度?

程序员代码的BUG率、处理一个问题的深度等

1.1-3 选择一种你以前已知的数据结构,并讨论其优势和局限。

就说二分法吧,优势就是比较简单,容易理解。缺点就是太慢。

有这么一个例子,比如从100个数中查找一个数,另这个数就是1。这个时候要先查50、25、12、6、3、2、1...  看吧很慢。。

1.1-4 前面给出的最短路径与旅行商问题有哪些相似之处?又有哪些不同?

最短路径问题是不用考虑路途中的目的点,直接到达终点。而旅行商问题是要从整体的考虑这个系统中完成以后最短的路径。

1.2 作为一种技术的算法 

效率问题:

本书举了一个例子,就是插入排序和归并排序。在这里了解到插入排序所花的时间大致为C*N*N,C是不依赖于N的常数。所花费的时间大致和N*N成正比。

而归并排序所花的时间大致为C*N*lgN

基于数学知识你可能忘了比如 lgN是啥 如图:

嗯,就是这样,总的来说插入排序比归并排序慢的很多。

即使是最优秀的计算机配上了插入排序、一般的计算机配上了归并排序,那么在数量级相当庞大的时候,一般的计算机也比最优秀的计算机快的许多。

1.2-1  给出在应用层需要算法内容的应用的一个例子,并讨论涉及算法的功能。

百度地图的导航啊、里面用到的算法那就真的多了。。 什么最快路线啊 最短路径啊 走不走高速啊 等等等等。。

1.2-2  假设我们正比较插入与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8n^2步,而归并排序运行64nlgn步。问对哪些n值,插入排序优于归并?

在算法导论中lgN=log2N。

经计算,8n^2=64nlgn,在2<N<64的时候,插入排序比递归排序要快。

1.2-3对于一个运行时间为100n*n的算法,要使其在同一台机器上,在比一个运行时间为2^n的算法运行的很快,n的最小值是多少?

f(n) = 100n^2

g(n) = 2^n

n=14, f=19600, g=16384 f > g

n =15, f=22500, g=32768 f < g

n最小为15

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.1 算法 算法就是把输入转换成输出的计算步骤的一个序列。问题陈述说明期望的输入/输出关系,算法则描述一个特定的...
    Nautilus1阅读 667评论 0 0
  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 2,561评论 0 40
  • 我:我有一个梦想 小跟班:啥梦想(瞥) 我:在云朵里住一天 小跟班:不怕遭雷劈啊 我:狗嘴吐不出象牙 小跟班:……...
    HK4阅读 304评论 0 0
  • 今天快上餐饮课的时候,我去完厕所洗完手回来,有两个很高个子的大哥哥看着我们穿着餐饮服,问我:你们这是要去干什么呀?...
    陈泉妡阅读 209评论 0 1
  • “斗鱼四小花旦”又来啦!继草莓、微笑之后,此次四位美女主播又将携手“护国法师”Joker,为大家带来一场非同一般的...
    f伐木累阅读 6,814评论 0 0