博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第1章 算法在计算中的作用
阅读量:6679 次
发布时间:2019-06-25

本文共 1086 字,大约阅读时间需要 3 分钟。

1.0 引言

  • 什么是算法?
  • 为什么要进行算法研究?
  • 相对于计算机中使用的其他技术来说,算法的作用是什么?

1.1 算法 

算法定义:就是定义良好的计算过程,它取一个或一组值作为输入,并产生一个或一组值作为输出。亦即,算法就是一系列的计算步骤,用来将输入数据转换成输入出结果。

算法可以解决那些类型的问题?

  • 人类基因项目研究
  • 信息的访问和检索
  • 电子商务
  • 制造业和其他的商业领域

数据结构 

数据结构是存储和组织数据的一种方式,以便于对数据进行访问和修改。没有哪一种数据结构可以适用于所有的用途和目的,因此,了解几种数据结构的长处和局限性是相当重要的。

1. 2 作为一种技术的算法 

有限的资源必须被有效的利用,如时间和空间等等。 
效率 
解决同一问题的各种不同算法的效率常常相差很大。这种效率上差距的影响往往比硬件和软件方面的差距还要来得大。

具体看一个例子,我们将介绍两个排序算法。 

(1)插入排序算法:对n个数据项进行排序的时间大约等于c1n2,其中c1是一个不依赖于n的常量,即该算法所需的时间大致正比于n2。 
(2)合并排序算法:n个数据项所需的时间大约是c2nlgn,(其中lgn,表示以2为底的对数函数),c2也是一个不依赖于n的常量。插入排序算法与合并排序算法相比通常有着更小的常量因子,即c1<c2

现在假设:让一台更快的,运行插入排序的计算机A与一台较慢的,运行合并排序的计算机B进行比较。两者都要对一百万个数的数组进行排序。假设A每秒执行10亿条指令,B每秒只能执行一千万条指令,因此AB快100倍。另外,假设让最能干的程序员采用机器语言,来为A编写插入排序算法的代码,所得到的代码需要2n2条指令来排序n个数(c1=2),让一位平均水平的程序员,编写合并排序算法在B上运行,所得到的代码有50nlgn条指令(c2=50)。则A排序一百万数据所花的时间为: 

2(106)2(109/)=2000

B所花的时间是: 

50106lg106107/=100

结论:B由于采用了一个运行时间增长得更为缓慢的算法,尽管它用的是效率较低的编译器,运行速度也比计算机A快了20倍。随着数据规模的增加,合并排序算法的优势会更加明显。

 

算法和其他计算 

几点关键语:

    1. 算法就像计算机硬件一样,是一种技术。
    2. 算法是当今计算机中用到的大部分技术的核心。
    3. 是否具有扎实的算法知识和技术基础,是区别真正熟练的程序员与新手的一项重要特征。

转载于:https://www.cnblogs.com/lujiango/p/7580785.html

你可能感兴趣的文章
2019前端面试题汇总(主要为Vue)
查看>>
js编程
查看>>
云HBase发布全文索引服务,轻松应对复杂查询
查看>>
码农张的Bug人生 - 目录
查看>>
学习webpack4 - 抽离公共代码
查看>>
【分享创造】react-typewriter-hook: 用react hooks来实现打字机的效果
查看>>
极限编程 (Extreme Programming) 和用户故事 (User Stories) 的关系
查看>>
coredns 排错记
查看>>
CentOS 7 安装 Nginx
查看>>
程序员毒鸡汤:我们都该学会正确的失败
查看>>
在 JavaScript 中优雅的提取循环内的数据
查看>>
HTML-语义类标签
查看>>
cookie、session、cache-control等
查看>>
一篇文章带你理解闭包
查看>>
Android权限列表
查看>>
Sass基础
查看>>
Webpack3简单入门2
查看>>
Springmvc+mybatis+restful+bootstrap框架整合
查看>>
ubuntu下rsync服务器端和客户端的配置
查看>>
UNIX/Linux 系统管理技术手册阅读(八)
查看>>