数据结构一

数据结构简介

数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。合理选择数据结构可以提升程序的运行效率或存储效率,是程序设计的基础组成部分。数据结构分为逻辑结构和物理结构两个层面:逻辑结构描述数据元素之间的抽象关系,物理结构描述数据在计算机中的实际存储方式。

基本术语和概念

数据 :所有能输入到计算机中并被处理的符号集合
数据元素 :数据的基本单位,也称为记录或节点
数据项 :构成数据元素的不可分割的最小单位
数据结构:数据元素之间存在的一种或多种特定关系的集合

主要逻辑结构类型:

  • 集合结构:元素同属一个集合但无其他关系
  • 线性结构:元素存在一对一关系
  • 树形结构:元素存在一对多关系
  • 图状结构:元素存在多对多关系

算法和算法分析

算法特性
  • 有穷性:执行有限步骤后自动结束
  • 确定性:每条指令有明确含义
  • 可行性:基本操作可以通过已实现运算完成
  • 输入输出:有零个或多个输入,一个或多个输出
时间复杂度

衡量算法执行时间随问题规模增长的变化趋势,常用大O表示法描述:

T(n) = O(f(n))

常见复杂度:

  • 常数阶:O(1)
  • 对数阶:O(\\log n)
  • 线性阶:O(n)
  • 平方阶:O(n\^2)
  • 指数阶:O(2\^n)
c 复制代码
// 线性时间示例
for(int i=0; i<n; i++) {
    printf("%d",i); 
}
空间复杂度

衡量算法所需存储空间随问题规模增长的变化趋势:

S(n) = O(g(n))

空间复杂度计算包括:

  • 固定空间需求(代码空间、简单变量等)
  • 可变空间需求(动态分配的空间、递归栈等)
c 复制代码
// 线性空间示例
int* arr = malloc(n * sizeof(int));
相关推荐
Selvaggia19 分钟前
Diffusion Model 的基本原理与模型架构
算法
wabs6662 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin032 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao2 小时前
算法50,分治归并,数组中的逆序对
java·算法
阳明山水3 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
雨落在了我的手上3 小时前
Java数据结构(十四):Map和Set
数据结构
码行山野赴时序归途3 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
别动我齐刘海4 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng11334 小时前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+1114 小时前
算法 --滑动窗口
c++·算法·leetcode