数据结构

含义

简单来说,数据结构就是关系,描述数据元素之间存在的一种或多特定关系的集合。

程序=数据结构+算法

分类

  • 逻辑结构:指数据对象中数据元素之间的相互关系;
  • 物理结构:指数据的逻辑结构在计算机中的存储形式。

四大逻辑结构

  • 集合结构
    数据结构与算法序
  • 线性结构数据结构与算法序
  • 树形结构
    数据结构与算法序
  • 图形结构
    数据结构与算法序

两大物理结构

  • 顺序存储结构
    把数据元素存在地址连续的存储单元里,数据间的逻辑关系和物理关系是一致的。
    如,数组结构。
    数据结构与算法序
  • 链式存储结构
    把数据元素存在任意存储单元里,这组存储单元可以连续,也可以不连续。
    这样的形式其存储关系并不能反映逻辑关系,所以需要一个指针存放数据元素的地址,这样通过地址就可以找到相关元素的位置。
    数据结构与算法序

算法

五个基本特征

  • 输入:算法具有零个多个输入。
  • 输出:算法至少有一个多个输出。
  • 有穷性:算法的执行步骤有限,并且每个步骤要在可接受内的时间内完成。
  • 确定性:每个步骤都有具体明确的含义,只有一条执行路径,相同的输入只能有唯一的输出结果。
  • 可行性:算法的每一步都能够通过执行有限次数完成。

算法设计的要求

  • 正确性
    • 算法程序没有语法错误。
    • 算法程序对于合法输入能够产生满足要求的输出。
    • 算法程序对于非法输入能够产生满足规格的说明。
    • 算法程序对于故意刁难的测试输入都有满足要求的输出结果。
  • 可读性:算法设计的目的之一就是便于阅读、理解和交流。
  • 健壮性:当输入的数据不合理时,算法能做出相关处理,而不是产生异常、崩溃或莫名其妙的结果。
  • 时间效率高和存储量低

算法效率

时间复杂度

用大O记法来体现时间复杂度。
数据结构与算法序
常用的时间复杂度所耗费时间从小到大依次是:
O(1)<O(log(n))<O(n)<O(nlog(n))<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)<O(log(n))<O(n)<O(nlog(n))<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
平均情况与最坏情况
当查找一个有n个随机数字数组的某个数字,最好的情况是第一个数字就是,则时间复杂度为O(1),但也有可能这个数字在最后一个位置,则时间复杂度为O(n)。

  • 平均运行时间是期望运行时间
  • 最坏运行时间是一种保证。通常除非特别限定,一般提到的运行时间都是最坏情况的运行时间。

空间复杂度

在写代码时,完全可以用空间换取时间。

相关文章: