zoukankan      html  css  js  c++  java
  • 计算机考研之数据结构-绪论

    数据结构-绪论

    数据结构

    基本概念与术语

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

    数据结构三要素

    逻辑结构

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

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

    存储结构

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

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

    数据的运算

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

    算法

    基本概念

    特性

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

    目的

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

    效率度量

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

    时间复杂度

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

    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))

    空间复杂度

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

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

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

    经典习题

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

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

    1. 下列函数的时间复杂度是( )
    int func(int n){
        int i=0, sum=0;
        while(sum < n) sum += ++i;
        return i;
    }
    

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

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

    答案:A
    解析:

  • 相关阅读:
    java基础的第二轮快速学习!day08
    java基础的第二轮快速学习!day07
    java基础的第二轮快速学习!day06
    Jsp复习(详细的知识点)day01
    Struts2,大爷你好!第二天补一发笔记
    java基础的第二轮快速学习!day05
    Struts2,大爷你好!第二天
    java基础的第二轮快速学习!day04
    Struts2,大爷你好!第一天
    java基础的第二轮快速学习!day03
  • 原文地址:https://www.cnblogs.com/nevermoes/p/9872819.html
Copyright © 2011-2022 走看看