数据结构和算法

来源:互联网 发布:九域神皇免费阅读 软件 编辑:程序博客网 时间:2024/06/15 00:16
一 数据结构 1.概念 数据结构就是数据之间的结构关系,或者理解成数据元素之间存在的一种或者多种特定关系的集合,在传统上数据结构分为逻辑结构与物理结构 (1)逻辑结构: 只反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后关系,而与他们在计算机中的存储位置无关,有以下四类: 集合结构:数据元素同属于一个集合,他们之间是并列关系,除此之外没有其他关系. 线性结构: 元素存在一对一的相互关系. 树形结构:元素中存在一对多对的相互关系 图形结果:元素中存在多对多的关系 (2)物理结构:数据的逻辑结构在计算机存储空间的存放形式,分为2中结构 顺序存储结构:是指数据元素存放在地址连续的存储单元里,其数据间的逻辑关系与物理关系一直,数组就是顺序存储结构的典型代表 链式存储结构:是指数组元素存放在内存中的任意存储单元里,也就是可以吧数组存放在内存的各个位置,这些元素在内存中可以是连续的也可是不连续的. 区别:简单的例子可以理解: 去银行取钱,每人按照顺序坐在大厅的椅子上,按照顺序来,这样是顺序的存储结构,但是大堂经理给每个人一个号码,大家随便坐,只按照号码的顺序,这样的就是链式存储结构 二 算法 1.概念 是指阶梯方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表用系统的方法解决问题的策略机制,在N中算法中,肯定存在一个执行效率最快的方法,那个这个方法就是最优算法 2.特性 输入,输出,有穷行,确定性和可行性(简单明了就不赘言了) 3.设计要求 正确性,可读性,健壮性,时间效率高和存储量低 4.算法效率的度量方法 (1)时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级时间复杂度几座T(n) = O(f(n)).常见的时间复杂度有O(1)<(logn)<O(n)<O(nlogn)<O(n*n)<O(n*n*n)<O(2的n次方)<O(n!)eg :一般来说单次循环是O(n) 双层循环可能是O(n*n)// 对数阶int i = 1, n = 100; while( i < n ){ i = i * 2;}由于每次i*2之后,就距离n更近一步,假设有x个2相乘后大于或等于n,则会退出循环。于是由2^x = n得到x = log(2)n,所以这个循环的时间复杂度为O(logn)。空间复杂度:复杂度不做特别说明的情况下,就是指时间复杂度。现在的硬件发展速度之快使得我们完全可以不用考虑算法所占的内存,通常都是用空间 换取时间。