数据结构学习笔记(二)

来源:互联网 发布:申请研究生的cv知乎 编辑:程序博客网 时间:2024/04/29 10:42

对于数据结构与算法关系的理解:一个实际难题的完美解决方案由构造出来的好的抽象数据结构+基于此数据结构下的最完美的构造算法,所以对于一些数据结构,会对应有一些很适合其特性的算法,解决问题的最优化方法,这也应该是研究算法的实际意义;

算法的定义:为解决某特定问题求解步骤的描述,在计算机中表现为指令的有限序列并且每条指令表示一个或多个操作;特性,输入输出(>=0个输入,>=1个输出)、有穷性(执行次数有限,算法生存时间可接受)、确定性(每一步骤有确定意义)、可行性(能够将算法转化为实际代码运行产生结果);

设计算法要求:正确性、可读性、健壮性、高效率极其低存储量;

在分析程序的运行时间时,最重要的是把程序看成是独立于程序设计语言的算法或者一系列步骤;

算法时间复杂度:T(n)=O(f(n)),表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,大O记法;

分析算法的复杂度,关键就是要分析循环结构的运行情况,常用时间复杂度耗费时间排序:O(1)<O(logn)<O(n)<O(n*logn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n);

通常,提到的运行时间都是最坏情况的运行时间,平均运行时间时所有情况中最有意义的,因为他是期望的运行时间,一般在没有特殊说明的情况下,都是指最坏时间复杂度;

算法的空间复杂度通过计算算法的存储空间实现,算法空间复杂度的计算公式,S(n)=O(f(n));

通常,时间复杂度指运行时间的需求,空间复杂度指空间需求,复杂度一般指时间复杂度。




原创粉丝点击