数据结构与算法入门

本文深入解析数据结构的基本概念,如数据项、数据元素、数据对象和数据结构的分类,探讨了线性表、栈、队列等典型数据结构,并详细阐述了算法的定义及其特征,包括输入、输出、可行性、有穷性和确定性。此外,文章还讨论了评价算法优劣的重要依据——复杂度,包括时间复杂度和空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:数据结构的基本概念

  • 数据:是描述客观事物的数值,字符,能被输入机器并且被处理的各种符号集合
  • 数据项:是不可分割的最小数据,具有原子性
  • 数据元素:是数据的基本单位,是数据集合的个体,通常由数个数据项组成,在程序中作为一个整体来处理
  • 数据对象:是性质相同的数据元素的集合,是数据的子集
  • 数据结构:是数据元素相互之间的某种特定关系,即一个数据是以什么方式构成的,什么结构构成

数据结构=逻辑结构+存储结构+操作/运算

逻辑结构有哪些分类?

  1. 线性结构:有且只有一个起点和一个终点,所有的点最多和两个点连接
  2. 非线性结构:一对多(树状结构),多对多(网状结构)
  3. 集合结构:就是数学中的集合,

存储结构有哪些分类?

  1. 顺序存储:节省内存,可实现对节点的随机查改,但插入和删除需要移动元素,效率较低
  2. 链式存储:插入和删除(不必移动节点,只要修改节点中的指针)方便,但查看慢
  3. 索引存储:除了建立存储信息外,还建立了索引表来标识节点的位置
  4. 散列存储:又称hash存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术

二:数据结构有哪些?

线性表,栈,队列,串,数组,广义表,树,二叉

三:什么是算法?

是指令的集合,为了解决特定问题而规定的一系列特定操作,简单地说,就是计算机解题过程

算法的特征:

  1. 输入:有一个待解决的问题
  2. 输出:有一个结果输出
  3. 可行性:即算法中的每条指令都是可行的,每个指令都等在有限的时间内完成
  4. 有穷性:不要是死循环
  5. 确定性:对于同一个输出,多次运行,总是得到相同结果

四:评价算法优劣的依据:复杂度(时间复杂度和空间复杂度)

1.时间复杂度 

  •  时间复杂度:不是具体的时间,也不是运行次数,只是规模(极限运算),用T(n)表示

我们一般用最坏时间复杂度用O表示:T(n)=O(^{n2});

  • 如何计算:
  1. 找出算法中的基本语句:通常是最内层循环的循环体
  2. 计算基本语句执行的数量级:不是执行次数,而是增长率
  3. 用O表示时间复杂度:计算方法为高数的求极限
  • 常用的时间复杂度:

 越向下时间复杂度越大,算法越差

2.空间复杂度

  • 算法存储量包括:
  1. 程序自身所占空间
  2. 输入数据所占空间
  3. 辅助变量所占空间

输入数据与算法无关,则只需要计算程序自身所占空间和辅助变量所占空间

空间复杂度是程序运行中占用存储空间的度量,S\left ( n \right )=O\left ( g\left ( n \right ) \right )

递归:自身所占空间小,但是运行时占用空间巨大S\left ( n \right )=O\left ( n \right )

其中时间复杂应用较多

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值