zoukankan      html  css  js  c++  java
  • 数据结构与算法之算法初体验(1)

      从网上下载了小甲鱼的算法与数据结构视频,打算把这个系列跟着视频学完。以达到对算法有初步的了解

    • 什么是算法?

      算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指条表示一个或者多个操作。(简而言之,算法就是做各种事情的技巧和方式 )

      记得小学时,老师为大家讲过德国大数据家高斯的故事,内容是高斯的老师要求全班同学从1加到100求出和。当大家埋头苦算时,高斯用很短的时间就得到了结果。高斯用的方法就是1+100,2+99,3+98...都得到101,那么从1加到100的和就有50对101。50x101=5050 这样算远比从1挨个加到100快的多,这就是算法的效率。代码如下:

     1  private static int suanfa1(int n){
     2         int sum=0;
     3         for (int i = 1; i <=n ; i++) {
     4             sum+=i;
     5         }
     6         return sum;
     7     }
     8 
     9     private static int suanfa2(int n){
    10         int sum=0;
    11         sum=(1+n)*(n/2);
    12         return sum;
    13     }
    View Code

    算法的特性

    • 输出

      算法至少有一个或多个输出。输出的形式可以是打印形式输出,也可以是返回一个值或多个值等。

    • 有穷性

      指算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。

    •  确定性

      算法的每一个步骤都具有确定的含义,不会出现二义性。算法在一定的条件下,只有一条执行路径,相同的输入只能有唯一的输出结果。

    •  正确性

      算法的正确性是指算法至少应该具有输入、输出和加工处理的无歧义性、能正确反映问题的需求、能够得到问题的正确答案。

      大体分为以下四个层次

    1. 算法程序没有语法错误。
    2. 算法程序对于合法输入能够产生满足要求的输出。
    3. 算法程序对于非法输入能够产生满足规格的说明。
    4. 算法程序对于故意刁难的测试输入都有满足要求的输出结果。
    • 可读性

      算法设计另一目的是为了便于阅读、理解和交流

    • 健壮性

      当输入数据不合法时,算法也能做出相关处理,而不是产生异常、崩溃或莫名其妙的结果。

      算法设计的要求

    • 时间效率高和存储量低

      应该具备时间效率高和存储量低的特点,我们应该尽量思考这两方面的问题。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    leetcode108 Convert Sorted Array to Binary Search Tree
    leetcode98 Validate Binary Search Tree
    leetcode103 Binary Tree Zigzag Level Order Traversal
    leetcode116 Populating Next Right Pointers in Each Node
    Python全栈之路Day15
    Python全栈之路Day11
    集群监控
    Python全栈之路Day10
    自动部署反向代理、web、nfs
    5.Scss的插值
  • 原文地址:https://www.cnblogs.com/gousheng107/p/7874544.html
Copyright © 2011-2022 走看看