数据结构和算法简介 以及 顺序表

数据结构和算法简介

一, 数据结构和算法的定义

数据结构的定义:

概述:

就是存储和组织数据的方式, 分为:线性结构和非线性结构.

算法的定义:

概述:

就是解决问题的思路和方法, 它具有独立性, 即,:它不依赖语言,而是解决问题的思路.Java能做Python也能做

特性:
  • 有输入
  • 有输出
  • 有穷性
  • 确定性
  • 可行性

二, 算法的时间效率衡量

时间复杂度的定义

时间复杂度表示一个算法随着问题规模不断变化的最主要趋势,通常用来衡量一个算法的优劣

懂俗点来说时间复杂制度可以衡量一个"算法的量级"

如何衡量算法的优劣

大0标记法 , 即:将次要条件都省略掉,最终形成1个表达式.
主要条件 :随着问题规模变化而变化的.
次要条件 :随着问题规模变化而不变的.

图解:

最优和最坏时间复杂度

如非特殊说明,我们考虑的都是最坏时间复杂度,因为它是算法的一种保证

而最优时间复杂度是算法的最理想,最乐观的状况,没有太大的参考价值.

常见的时间复杂度如下

从最优到最坏分别是:

0(1) -> o(logn) -> o(n) -> o(nlogn) -> o(n²) -> o(n³)

常数阶 -> 对数阶 -> 线性阶 -> 线性对数阶 -> 平方阶 -> 立方阶

扩展:常见的空间复杂度如下

了解即可,因为服务器(内存)资源一般是足够的

从最优到最坏分别是:

o(1) -> o(logn) -> o(n) -> o(n²) -> o(n³)

三, 数据结构的分类

数据结构=存储,组织数据的方式,是算法解决问题时的载体

  • 线性结构
    特点:每个节点都只能有1个前驱1个后继节点
    例如:栈, 队列
  • 非线性结构
    特点:每个节点都可以有多个前驱,多个后继节点
    例如:树, 图

四, 线性结构存储数据的方式

(1)顺序表的存储方式

顺序表的定义

将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示

解释: 顺序表有 数据区 和 信息区 两部分组成.

特点

  • 数据区和信息区在一起的 ->一体式存储(扩容时只能整体搬迁)

    • 图解:
  • 数据取货和信息区分开存储的 ->分离式存储(可以直接让信息区指向新的 数据区即可, 不用整体搬迁 ).

    • 图解

顺序表扩容策略

思路1:每次增加固定的容量. 拿时间换空间

思路2:每次扩容,容量翻倍. 拿空间换时间

(2)链表的存储方式

五, 总结

  • Q1:数据结构和算法的定义?
    • 数据结构的定义:就是存储和组织数据的方式, 分为:线性结构和非线性结构.
    • 算法的定义:就是解决问题的思路和方法, 它具有独立性, 即,:它不依赖语言,而是解决问题的思路.Java能做Python也能做
  • Q2: 时间复杂度的定义?
    • 时间复杂度表示一个算法随着问题规模不断变化的最主要趋势,通常用来衡量一个算法的优劣.
    • 懂俗点来说时间复杂制度可以衡量一个"算法的量级"
  • Q3: 数据结构的分类?
    • 线性结构
      特点:每个节点都只能有1个前驱1个后继节点
      例如:栈, 队列
    • 非线性结构
      特点:每个节点都可以有多个前驱,多个后继节点
      例如:树, 图
  • Q3:线性结构存储数据的方式
    • 顺序表:
      • 将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示.
      • 解释: 顺序表有 数据区 和 信息区 两部分组成.
    • 链表:
      • 将元素存放在通过链接构造起来的一系列存储块中,存储区是非连续的
相关推荐
切糕师学AI2 小时前
环形缓冲区(Ring Buffer / Circular Buffer)详解:原理、优势、应用与高性能实现
数据结构·环形缓冲区
WolfGang0073212 小时前
代码随想录算法训练营 Day50 | 图论 part08
数据结构·算法·图论
晚枫歌F4 小时前
最小堆定时器
数据结构·算法
嫩萝卜头儿6 小时前
2 - 复杂度收尾 + 链表经典OJ
数据结构·算法·链表·复杂度
样例过了就是过了6 小时前
LeetCode热题100 分割等和子集
数据结构·c++·算法·leetcode·动态规划
木木_王7 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
北顾笙9807 小时前
day38-数据结构力扣
数据结构·算法·leetcode
m0_629494737 小时前
LeetCode 热题 100-----14.合并区间
数据结构·算法·leetcode
@小码农7 小时前
2026年3月Scratch图形化编程等级考试一级真题试卷
开发语言·数据结构·c++·算法
_日拱一卒9 小时前
LeetCode:226翻转二叉树
数据结构·算法·leetcode