计算机考研之数据结构-绪论

数据结构-绪论

数据结构

基本概念与术语

  • 数据
    • 能被计算机处理的符号的集合。
  • 数据元素
    • 数据的基本单位,好比一个学生的全部记录。
  • 数据对象
    • 相同性质的数据元素的集合,如整数数据对象就是全部整数的集合。
  • 数据类型
    • 值的集合 + 定义在该集合上的一组操做
  • 抽象数据类型
    • 数据对象,数据关系,基本操做集合的三元组,与具体实现无关。
  • 数据结构
    • 数据元素之间非孤立的关系,包括了:逻辑结构,存储结构,数据的运算

数据结构三要素

逻辑结构

逻辑结构即数据的抽象表示,与具体实现无关的。数组

  • 线性
    • 通常性
    • 受限性
      • 队列
    • 推广
      • 数组
      • 广义表
  • 非线性
    • 集合
      • 通常树
      • 二叉树
      • 有向图
      • 无向图

存储结构

即数据结构的物理结构,这是数据结构在计算中的实际表示,依赖于具体实现。数据结构

  • 顺序存储
    • 逻辑上相邻,物理上也相邻。
  • 链式存储
    • 逻辑上相邻,物理上并不相邻。
  • 索引存储
    • 物理位置存储在索引表中。
  • 散列存储
    • 物理位置由一个散列函数计算获得。

数据的运算

运算的定义针对逻辑结构,运算的功能针对存储结构。函数

算法

基本概念

特性

  • 有穷性
    • 算法必须在有限时间内完成
  • 肯定性
    • 对于相同的输入都有相同的输出
  • 可行性
    • 算法必须由基本运算的有限次组合来描述
  • 输入
  • 输出

目的

  • 正确性
  • 可读性
  • 健壮性
    • 对于非法数据有适当的处理
  • 高效性

效率度量

效率的度量由时间与空间的复杂度共同描述。spa

时间复杂度

即执行算法须要消耗的时间。code

  1. n
    • 问题的规模,复杂度都是关于问题规模的函数
  2. 语句频度
    • 该语句在算法中被重复执行的次数
  3. T(n)
    • 全部语句的频度
  4. f(n)
    • 基本运算的频度

由于全部T(n)与f(n)同数量级,因此使用T(n)来衡量算法的实际复杂度。记作T(n)=O(f(n)),这里的O记号表示的的是取f(n)的最大数量级。对象

对于时间复杂度还有一点很是很是重要的是,时间复杂度依赖于输入。根据输入的不一样,通常咱们会将时间复杂度分类三类来讨论:最坏时间复杂度,平均时间复杂度,最坏时间复杂度。通常咱们考虑在最坏状况下的时间复杂度,即算法运行的上界。索引

经常使用的时间复杂度比较:
O(1) < O(\(log_2\)n) < O(n) < O(n) < O(n\(log_2\)n) < O(\(n^2\)) < O(\(n^3\)) < O(\(2^n\)) < O(\(n!\)) < < O(\(n^n\))队列

空间复杂度

即实现这样的算法须要的辅助空间的大小。it

  1. S(n)
    • 空间复杂度记号

算法原地工做是指算法所须要的辅助空间是常量,即O(1)。

经典习题

1) 如下属于逻辑结构的是( )
A. 顺序表 B. 散列表 C. 有序表 D.单列表

答案:C
解析:分清楚逻辑结构和存储结构。

2) 下列函数的时间复杂度是( )

int func(int n){
    int i=0, sum=0;
    while(sum < n) sum += ++i;
    return i;
}

答案:O(\(\sqrt n\))
解析:

3) 如下说法错误的是()
A. 算法原地工做的含义是指不须要任何额外的空间
B. 相同规模n下,复杂度O(n)的算法在时间上老是优于复杂度O(\(2^n\))
C. 所谓的时间复杂度是指最坏的状况下,估算算法执行时间的一个上界
D. 同一个算法,实现语言的级别越高,执行效率越低

答案:A 解析:

相关文章
相关标签/搜索