Java教程

算法0.什么是算法

本文主要是介绍算法0.什么是算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、基本概念

算法(Algorithm)是指一个解决问题的准确而完整的过程,包含一系列解决问题的清晰指令。

例如把大象放进冰箱需要几步,答案是3步:

  1. 打开冰箱门;
  2. 把大象塞进去;
  3. 关上冰箱门。

这三步准确并且完整的描述了解决这个问题的指令,所以从大的角度看,我们的日常生活中充满了算法,如何做一顿饭、如何冲一杯咖啡等等。但是这样去讨论算法就有点广泛了,很多现实问题是拥有近乎无穷变量的混沌系统,我们很难给出一个解决问题的方案。

扯远了,我准备讲的是计算机中算法。

在计算机中,算法就是解决一个问题的计算过程,该过程通过输入,然后通过算法获取一个正确的输出。按照这个思路,算法就是把输入转换为输出的计算步骤。

例如对一个数组进行排序
请添加图片描述

二、算法解决了什么问题

  1. 识别人类DNA中10万个基因
  2. 互联网中的网页快速访问与信息检索
  3. 电子商务中的核心技术,公钥密码与数字签名
  4. 如何按最有效的方式分配稀有资源
  5. 如何确定地图中某一点到另一点的最短道路
  6. 求两个序列的最长公共子序列
  7. 寻找n个点的凸包

上述只是无穷无尽的问题中的微不足道的一部分,但已经向我们展示出了算法的应用。同样,对于一个复杂问题,寻找一个真正的解或一个最优解是一个很大的挑战。

三、如何评价一个算法

如果计算机的计算速度无限快、储存空间无限大且免费,那么研究算法毫无意义,我们只需要关注如何才能正确获得问题的结果就行了。

可惜计算机计算速度很快,但是不是无限快;存储空间是廉价的,但不免费。

所以对于一个算法,时间和空间都是有限的资源,我们需要合理运用这两种资源来解决问题。

因此对于算法的评价引入了时间复杂度和空间复杂度。

1 时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模 n 的函数 f(n) ,算法的时间复杂度也因此记做:

T ( n ) = O ( f ( n ) ) T(n) = O(f(n)) T(n)=O(f(n))

从想当然的角度和理论的角度看,算法规模越大,所需要的时间就越久,增长的速率则与 f(n) 正相关。

当然时间复杂度还分好几种,如最坏情况下、最好情况下、平均情况下这几种,这些都需要根据具体问题进行具体分析。

2 空间复杂度

算法的空间复杂度的衡量就简单的多,是指算法需要消耗的内存空间。

除了时间和空间复杂度外,还有几项评价算法的指标。

3 正确性

毫无疑问,这是废话!

4 可读性

算法是人设计和使用的,所以得关照一下使用者ㄟ( ▔, ▔ )ㄏ,或者防止过段时间连自己都看不懂。

5 鲁棒性

这个词是英文单词 robustness 英译过来的, 用中文来理解的话大概是稳定性的意思吧,指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

四、结语

以上就是关于算法的基本介绍、下一节开始将从排序算法开始进入算法的世界。

这篇关于算法0.什么是算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!