大话数据结构【2】—算法

版权声明:本文为博主原创文章,转载请注明来源 https://blog.csdn.net/C1664510416/article/details/83422997

  经常听他们吹牛逼,这个用了什么什么牛逼的算法,起了一个牛哄哄的名字,反正挺吓人人的,不知道为什么,现在给新东西起名字是越来越“吓人了”!

  其实算法就是解决特定问题的求解步骤,在计算机中表现为指令的有限序列。没有什么吓人的东西,只是它的思想很精妙,有些作者可能是为了让你感受到他思想的无比美妙的思想,才起了一个“吓人的名字吧”。

  算法有时候可以理解成看待问题的角度,角度对了,事半功倍,角度不对事倍功半,也有可能是一事无成,竹篮打水。看待问题的角度不一样,去做事情的方式就不一样了,结果可能就是千差万别了!!!

  最经典的就是高斯大神的求和算法和计算机循环求和,高斯大神的方法无论到多少都是那么固定的几步,而计算机循环就不一样数字小还是算的挺快的,数字一大就卡住了。。。这就是不同之间算法的差距,所以可想而知,选择一个好的算法多么重要!!!

  算法具有五个基本特性,在计算机的领域来说,算法是依附在计算机上面的,所以肯定会受到计算机特性的影响,计算机有输入,输出,运算等特性。那么依附在计算机上面的算法肯定也要有输入输出等特性。在计算机中,算法是用程序来表现的,程序有循环,分支,选择等结构,所以算法肯定也会具有这些特性。既然是程序,一定是有确定结果的,要么是这个要么是哪个。一定会在一个时间点停下来输出结果,一定是可行的,不然是不可能编制成程序的。总结一下:输入,输出,可行性,确定性,有穷性。

  算法不是凭空产生的,是人做出来的,或者说是人想出来,设计出来的,既然是人设计出来的,一定有一些人的特性和计算机的特性,计算机特性,正确性,高效率,低存储量。

  正确性:算法是针对问题来设计的,一定要能够正确反映问题的需求,能够得到问题的正确答案。算法是要编织成程序的,既然这样,【1】算法程序不能有语法的错误,【2】算法要对合法的输入数据能够产生满足要求的正确结果【3】对于非法数据能够得到满足规格的说明【4】对于刁难的,但是满足要求的数据都有满足要求的输出结果。

  健壮性:对于输入数据不合法时,要能够做出相应的处理而不是产生异常或者莫名其妙的结果。

  可读性:算法设计出来是给大家用的,如果别人无法理解你的算法,即使结果是对的,别人也不会用,应为他们不知道什么情况下会出现坏的结果。

  高效率和存储量低:人们都希望花费最少的钱和时间把事情做好!对于算法,也是这样的道理呀。

  在分析算法时,还要把基本操作的数量与输入规模关联起来。(算法有时候在一定规模的时候才能看出优势)

  --------------------------------------------------------------------------------------------------------------------------------------------------------------

  算法效率的度量方法:

    事后统计法:不谈。(做完的才看结果对不对?)

    事前分析估算法:这种是科学的。(先思考能不能做,再去做!)

   算法效率的度量,主要就是算法执行的时间的度量估算,我们知道算法是要编织成程序的,程序主要有三种结构,分支,循环,选择,而算法的执行时间主要就和这些程序结构有关。常用大O表示法来表示程序的时间复杂度。

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------

  算法的空间复杂度:算法执行时会占用的存储空间,空间时间的关系仿佛是杠杆原理中力和力臂的关系,一个越小另一个就越大。有时候为了提高算法的时间效率,往往会用空间来换却时间的节省。

   利用好算法复杂度的分析工具,改经自己的代码,让计算机轻松一点,这样你就能更加胜人一筹!

  

  

猜你喜欢

转载自blog.csdn.net/C1664510416/article/details/83422997
今日推荐