/--------------------------------------------------
本文所表述纯属个人观点,完整理论请参考相关书籍!如果有说错的地方,欢迎指正,共同学习。
--by BenzKuai
---------------------------------------------------
程序 = 数据结构 + 算法
地球人都知道!!
数据结构:元素与元素的关系而已,仅此而已。当然满足不同的关系,可以定义成不同的结构。以后慢慢讨论。。。
算法:当然就是算出某个问题解的方法。只要能解出答案的都可以叫算法。只是,算法有优有劣。以后慢慢讨论。。。
既然算法有优有劣,那么问题来了:如何度量一个算法是优是劣?
当前,流行的做法是:算出算法的最坏情况(本文只说时间复杂度),也就是所谓的"大O"。--要记住,算法是计算“增长率”的。比如:f(N)= 1,常量,它不会变化当然就不会有增长率;OK,再看 f(N)= N,这个增长率是线性的,再看 f(N)= N2,这个增长率是平方的。当N是问题的规模时,这个增长率也就是影响算法性能的关键。
可能你会问,这个f(N)=N的公式从何而来?问的很好。
我们假设程序中每个操作语句都执行相同的时间,那么我们的问题就将转化成求解操作步骤的数理。
f(N) = 解出问题解的所有操作步骤,或者说所有的执行语句(声明就不用再计算了)。
例子:
最坏情况下,v不在这个数组中。那for循环要执行n次,则就会有i=0一次操作,i<n,i++,v==x[i] 3n次操作,再有return -1一次操作,
总共f(n)=3n+2次操作。