《数据结构与算法》之认识(1)

前面的话:

写程序的大家都知道数据结构和算法的重要性,但是恰恰数据结构和算法学起来比较困难,原因如下:

1:本来就有点难

2:大学老师老师不一定能讲清楚

3:大学老师不愿意讲,因为工资跟讲课什么关系

4:有的人就没学过这么课,想上网看,网上几乎没视频,有的就是

      清华大学严蔚敏的,但是一位老教授,讲得慢,不太适合我们听(不过听说讲得挺好的!)。

5:大多都是某种语言的(C,C++)语言来实现的,但是一般都是光讲,没给什么例子,所以大家学起来还是不清楚,所以我如果不出意外的话,会用java语言把我们常用的数据结构和算法,用代码的形式会展现出来。

本套博客的特点,本着一图胜千言的原则,基本每篇上都会用一个图来总结知识,帮助大家记忆,大家共同学习!


《数据结构与算法》之认识(1)_第1张图片 


算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或者多个操作。


算法的特性:有穷行:指令序列是有限的。


                      确定性:每条语句的含义是明确的。


                      可行性:能在可行的时间内完成。


                     输出:一个或者多个输出


                      输入:一个或者零个输入。


程序包含:1:数据结构2:算法3:程序设计方法4:编程语言


算法的设计目标:


1:正确性


2:可读性


3:健壮性


4:高效性。


当算法的时间复杂度T(n)与问题规模n无关时,此时算法的时间复杂度T(n)=O(1)。例如:计算下列算式的


  1-2+3-4+5.....+N


分析:当N为奇数时,和为:(N+1)/2


      当N为偶数时,和为:-N/2



 


例2:设n为如下算法处理的数据元素个数,求算法时间复杂度。


for(i=1;i<=n;i=i*2)


{


   System.out.println(i);


}



分析:执行次数为2f(n)<=n; f(n)<=log2n


      所以T(n)=O(log2n)


如果是for循环的话,几个循环时间的复杂度就是T(n)=O(n(的三次方))



你可能感兴趣的:(《数据结构与算法》之认识(1))