数据结构:导论

目录

  • 一,数据结构的研究内容
  • 二,基本概念与术语
    • (一)数据、数据元素、数据项与数据对象
    • (二)数据结构
    • (三)数据类型与抽象数据类型
  • ️ 三,抽象数据类型的表示与实现
  • ⚙️ 四,算法与算法分析
    • ⚖️ (一)算法的定义及特性
    • (二)评价算法优劣的基本标准
    • ⏱️ (三)算法的时间复杂度
    • (四)算法的空间复杂度
  • 章结


一,数据结构的研究内容

数据结构:导论_第1张图片

数据结构是计算机科学的核心基础,其研究内容可概括为三大维度:

  • 数据组织形式:探索如何将现实世界中的信息(如文本、图像、网络关系)转化为计算机可处理的逻辑结构,包括线性结构(链表、栈、队列)与非线性结构(树、图)。
  • 操作体系设计:定义针对数据结构的标准操作,例如数组的查找与排序、树的遍历与插入,这些操作直接影响程序的效率。
  • 性能优化理论:通过时间复杂度(如O(n)、O(log n))和空间复杂度分析,评估不同数据结构在实际场景中的适用性,如数据库索引选择B+树而非二叉搜索树。

二,基本概念与术语

(一)数据、数据元素、数据项与数据对象

  • 数据:计算机处理的所有符号的集合,例如数字123、字符'A'、图像像素矩阵。
  • 数据元素:数据的基本单位,可由多个数据项组成。如学生信息表中“张三”是一个数据元素,包含姓名、年龄、成绩等数据项。
  • 数据项:数据的最小不可分割单位,如学生年龄20
  • 数据对象:具有相同性质的数据元素的集合,例如全体整数、所有英文字母。

(二)数据结构

数据结构是数据元素之间的逻辑关系、存储方式及操作的集合,分为:

  • 逻辑结构:描述数据元素间的抽象关系,如:
    • 线性结构:元素按顺序排列(链表、数组);
    • 树形结构:层次化关系(二叉树、堆);
    • 图状结构:多对多关系(社交网络模型)。
  • 存储结构:数据在计算机中的物理表示,包括:
    • 顺序存储(数组):连续内存空间,访问高效但插入删除低效;
    • 链式存储(链表):离散内存块通过指针连接,灵活但访问需遍历。

(三)数据类型与抽象数据类型

  • 数据类型:限定数据取值范围和操作,如C语言中的int(取值-231~231-1,支持加减乘除)。
  • 抽象数据类型(ADT):将数据和操作封装为独立单元,仅暴露接口(如栈的push/pop),隐藏实现细节,体现面向对象思想。

️ 三,抽象数据类型的表示与实现

以栈(Stack)为例:

  1. ADT定义
    ADT Stack {
        数据:有限线性序列,支持后进先出(LIFO)  
        操作:InitStack(), Push(), Pop(), IsEmpty()  
    }
    
  2. 顺序栈实现:用数组存储,通过指针top标记栈顶,时间复杂度:
    • 初始化:O(1)
    • 入栈/出栈:O(1)(仅修改指针)
  3. 链栈实现:用单链表存储,头节点为栈顶,插入/删除时间复杂度O(1),空间动态分配更灵活。

⚙️ 四,算法与算法分析

⚖️ (一)算法的定义及特性

算法是解决问题的有限步骤序列,需满足:

  • 有穷性:步骤有限,不会无限循环;
  • 确定性:每一步操作明确无歧义;
  • 可行性:可通过基本运算实现;
  • 输入/输出:0个或多个输入,1个或多个输出。

(二)评价算法优劣的基本标准

  • 正确性:能解决问题并返回正确结果;
  • 可读性:代码逻辑清晰,便于维护(如注释、变量命名);
  • 健壮性:对非法输入(如空指针)能合理处理;
  • 效率:时间与空间复杂度低,是核心优化目标。

⏱️ (三)算法的时间复杂度

  • 大O表示法:忽略低阶项和常数,描述最坏情况下的时间增长趋势。
    • 例:冒泡排序(O(n²))、快速排序(平均O(n log n))。
  • 常见复杂度级别(由低到高):
    O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!)
    
  • 计算示例
    int sum = 0, i;  
    for (i = 0; i < n; i++) {       // 循环n次  
        sum += i;                    // O(1)操作  
    }
    // 总时间复杂度:O(n)
    

(四)算法的空间复杂度

指算法运行时占用的额外内存空间,与输入规模的关系:

  • 例1:数组排序(原地排序如快速排序,空间复杂度O(log n);非原地如归并排序,O(n))。
  • 例2:递归算法(栈空间消耗等于递归深度,如二叉树遍历递归实现为O(h),h为树高)。

章结

数据结构是算法的“骨架”,而算法是数据结构的“灵魂”。从基础概念到ADT设计,再到复杂度分析,这套体系支撑着搜索引擎、区块链、AI模型等复杂系统的底层逻辑。理解它们,如同掌握计算机科学的“通用语言”,为解决实际问题提供理论基石。

你可能感兴趣的:(数据结构,学习笔记,数据结构,导论,算法,时间复杂度,空间复杂度)