zoukankan      html  css  js  c++  java
  • 算法(algorithm)

    算法是什么?

    算法是指令的集合,是为解决特定问题而规定的一系列操作。

    它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。

    一个算法通常来说具有以下五个特性:

      1.输入:一个算法应该以待解决问题的信息作为输入。

      2.输出:输入对应指令及处理后得到的信息。

      3.可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。

      4.有穷性:算法执行的指令个数是有限的,每个指令又是在有限时间内完成的,因此整个算法也是在有限时间内可以结束的。

      5.确定性:算法对于特定的合法输入,其对应的输出是唯一的。即当算法从一个特定的输入开始,多次执行同一条指令集结果总是相同的。简单的说,算法就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是算法的逻辑形式,后者是算法的代码形式。

    举例:

      如何求0+1+2+3+....+10000=?

     算法一:依次相加(循环):while、do-while、for

     算法二:高斯解法 

          首尾相加 * 50 : (1+10000)*10000/2  --->  100 * 101/2

     算法三:使用递归实现

          sum(100) = sum(99)+100 --> sum(99) = sum(98)+99

            ....sum(2) = sum(1)+2 --> sum(1)=1

    评价算法优劣的依据:复杂度(时间复杂度和空间复杂度)

    算法的复杂性体现在运行该算法时的计算机所需资源的大小。

    计算机资源最重要的是时间和空间资源,因此复杂度分为时间复杂度和空间复杂度

    时间复杂度是执行算法所需要的计算工作量

    空间复杂度是指执行这个算法所需要的内存空间

  • 相关阅读:
    PAT乙级1014.福尔摩斯的约会 (20)(20 分)
    PAT乙级1013.数素数
    PAT乙级1012.数字分类 (20)(20 分)
    PAT乙级1011.A+B和C (15)(15 分)
    PAT乙级1025.反转链表 (25)
    PAT乙级1020.月饼(20)
    PAT乙级1015.德才论(25)
    PAT乙级1010.一元多项式求导(25)
    PAT乙级1009.说反话(20)
    PAT乙级1008.数组元素循环右移问题(20)
  • 原文地址:https://www.cnblogs.com/zang1998/p/11553069.html
Copyright © 2011-2022 走看看