数据结构.

news2024/11/15 13:23:37

1:基本大纲

  1. 数据结构算法
  2. 线性表顺序表链表队列
  3. 二叉树遍历创建
  4. 查询方法排序方式

2:数据结构(逻辑结构,存储结构,操作(数据的运算))

2.1:数据:不是单一数值,与集合类似

        数据元素:数据基本单位,由若干数据项组成

        数据项:数据的最小单位

2.2:节点:数据元素

2.3;逻辑结构

线性关系:一对一      线性结构    --> 线性表:顺序表,链表 ,栈,队列

层次关系:一对多    树形结构    --> 树

网状关系:多对多     图状结构 --> 图

2.3:存储结构

2.3.1:顺序存储结构(数组,链式存储(链表))

3:链式存储结构

特点数据内存中不连续通过指针进行连接

链表结构体

struct  node_t
{
	int data;//数据域
	struct  node_t *next;//指针域, 指向自身结构体类型的指针
};

struct node_t A={1,NULL};

struct node_t B={2,NULL};

struct node_t C={3,NULL};

  1. A.next = &B;
  2. B.next = &C

3.1:索引存储结构

提高查找速度

索引表 + 数据文件

 3.2:散列存储

数据在存储的时候与关键码之间存在某种对应关系

存的时候按照对应关系存

取的时候按照对应关系取

4:操作: 增、删、改、查

二:算法

2.1:算法的特性:

1:有穷性:执行步骤有限

2:确定性:

3:可行性:有限时间内完成

4:输入和输出

2.2:如何评价算法好坏?

正确性:保证可以正确实现功能

易读性:容易被解读

健壮性:容错处理

高效性:可执行语句重复执行的次数来衡量算法是否高效(时间复杂度)

低存储性:占用空间少

2.3:时间复杂度

算法可重复执行语句执行的次数

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

T(n) //问题规模的时间函数

n //问题规模,输入量的大小

O //时间数量级

f(n) //算法的可执行语句重复执行的次数 用问题规模n的某个函数f(n)来表达

1

1+2+3++n

方法1

sum = 0;

for(int i = 1;i<=n;i++) n==100 10000

sum+=i; 100 10000

f(n) = n

T(n)=O(n)

方法2

等差数列{an}的通项公式为:an=a1+(n-1)d。前n项和公式为:Sn=n*a1+n(n-1)d/2或Sn=n(a1+an)/2 。

int sum = n(1+n)/2; n=100,1

f(n)=1

T(n)=O(1)

2

int i,j;

for(i=0;i<n;i++) //n

for(j=0;j<n;j++) //n

printf(“ok\n”);

T(n) = O(n^2);

例3:

int i,j;

for(i=0;i<n;i++)

for(j=0;j<=i;j++)

printf(“ok\n”);

i 次数

0 1

1 2

2 3

n-1 n

f(n) = 1+2+3+...+n = n(1+n)/2 = n/2 + n^2/2 ----> n^2

3:计算大O的方法

(1)根据问题规模n写出表达式 f(n)

  1. 只保留最高项,其它项舍去
  2. 如果最高项系数不为1,除以最高项系数
  3. 如果有常数项,将其置为1 //当f(n)的表达式中只有常数项的时候,有意义 f(n) = 8

f(n)=8 O(1)

//f(n) = 3n^5 + 2n^3 + 6*n^6 + 10

3.6空间复杂度

算法占用空间大小一般将算法的辅助空间作为衡量空间复杂度的标准。

算法占用的存储空间包括:

1)输入输出数据所占空间

2)算法本身所占空间

3)额外需要的辅助空间

顺序表总结

  1. 顺序内存中连续存储
  2. 顺序表长度固定#define N 5
  3. 顺序表查找数据、修改数据比较方便的,插入和删除麻烦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ面试题汇总

RabbitMQ面试题 一、RabbitMQ基础1. 什么是RabbitMQ&#xff0c;它的基本架构是怎样的&#xff1f;2. RabbitMQ支持哪些协议&#xff1f;3. 说一下AMQP协议&#xff1f;4. 为什么要使用RabbitMQ&#xff1f;5. MQ的应用场景有哪些&#xff1f;6. 解耦、异步、削峰是什么&#x…

【Linux之·工程构建·Cmake】

系列文章目录 文章目录 前言一、概述二、CMake的基本概念2.1 CMake的工作原理和基本组成部分2.2 CMakeLists.txt文件的结构和语法2.2.1 变量操作2.2.2 注释2.2.3 日志2.2.4 宏定义 2.3 CMakeLists.txt文件的作用 三、CMake的常用命令和变量3.1 常用的CMake命令和变量3.1.1 字符…

多尺度病理图像纹理特征作为肺腺癌预后预测的新指标|文献精读·24-08-09

小罗碎碎念 这一期推文分享的文献是2022年发表于 Journal of Translational Medicine 的一篇文章&#xff0c;目前IF6.1。 这篇文章值得刚入门病理AI领域的老师/同学仔细研读&#xff0c;因为思路清晰&#xff0c;该讲到的流程基本都涉及了&#xff0c;详细讲述了病理图像的各种…

PyTorch基于深度神经网络的语音情绪识别

【图书推荐】《PyTorch语音识别实战》-CSDN博客 《PyTorch语音识别实战&#xff08;人工智能技术丛书&#xff09;》(王晓华)【摘要 书评 试读】- 京东图书 (jd.com) 情绪数据的获取与标签的说明 首先是语音情绪数据集的下载&#xff0c;在这里使用瑞尔森情感语音和歌曲视听数…

动态规划求解最小斯坦纳树(证了一天两夜)

最小斯坦纳树 给定点的“最小生成树”问题。 背景 给定无向连通图 G ( V , E ) G(V,E) G(V,E)&#xff0c;给出包含 k k k 个结点的点集 S S S&#xff0c;包含点集 S S S 的连通图被称作 斯坦纳树。但我们关注的是如何求出包含点集 S S S 的最小连通图 G ′ ( V ′ ,…

One-hot编码和Multiple-hot编码

在推荐系统和机器学习中&#xff0c;我们通常会遇到两种类型的编码方式&#xff1a;One-hot 编码和 Multiple-hot 编码&#xff08;有时也称为 Multi-hot 编码&#xff09;。这两种编码方式用于将分类数据转换为数值表示&#xff0c;以便机器学习模型能够处理这些数据。 1、On…

国产开源大模型都有哪些?

随着ChatGPT引领的大模型热潮&#xff0c;国内的公司开始相继投入研发自己的人工智能大模型&#xff0c;截止到2023年10月&#xff0c;国产公司的大模型有近百个&#xff0c;包括一些通用大模型&#xff0c;比如百度的文心一言&#xff0c;也有特定领域的专用大模型&#xff0c…

电力时代的液冷-EAK水冷电阻器的来源

当电气设备出现故障时&#xff0c;我们经常会表述成“这个东西烧了”。为什么用“烧”而不是“破”了或“坏”了呢?因为在电气产品中&#xff0c;一部分的电能会在使用的过程中通过电阻和电感的作用转化为热&#xff0c;如果因为设计或故障原因&#xff0c;产生的热没有被有效…

python自动化笔记:os模块和异常处理

目录 一、os模块1.1、常用方法1.2、其他方法&#xff08;了解即可&#xff09; 二、异常处理 try except2.1、语法格式1&#xff1a;2.2、语法格式2&#xff1a;指定异常类别&#xff0c;捕获异常2.3、语法格式3&#xff1a;try-finally 语句无论是否发生异常都将执行最后的代码…

〖基础篇1〗ROS2 Foxy Ubuntu 20.04 (Focal Fossa)安装教程

目录 一、linux Ubuntu 20.04 (Focal Fossa)安装二、linux VPN安装三、linux anaconda安装&#xff08;可选&#xff09;四、linux ROS2 foxy安装1. 设置语言环境2. 设置DEB软件源3. 安装开发工具和依赖4. 安装ROS2 foxy桌面版本5. 运行示例 一、linux Ubuntu 20.04 (Focal Fos…

常见框架漏洞详解③!!

Apache Apache 是世界使⽤排名第⼀的 Web 服务器软件。它可以运⾏在⼏乎所有⼴泛使⽤的计算 机平台上&#xff0c;由于其跨平台和安全性被⼴泛使⽤&#xff0c;是最流⾏的 Web 服务器端软件之⼀。 apache⽬录结构&#xff1a; bin&#xff1a;存放常⽤命令⼯具&#xff0c;如h…

颠倒字符串中的单词(LeetCode)

题目 给你一个字符串 &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 中可能会存在前导空格、尾随…

CSDN机器人与僵shi粉测试(真人看看)

​哈哈哈一起玩个游戏 发现老是莫名其妙有很多关注点赞与收藏&#xff0c;关注的几百个人应该都是机器人 此博文用于检测平台机器人阅读量 —>如果是真人请务必随便留言<— 可以根据阅读量与评论判断机器人数量 不用点赞收藏有机器人就行 机器人统一特征是在2019年左右…

【C++ 面试 - 基础题】每日 3 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

ImportError: DLL load failed while importing _rust: 找不到指定的程序的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

网络协议四 物理层,数据链路层

从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议&#xff0c;以及加上协议后的称谓 各个层的作用 应用层&#xff1a;可以认为是原始数据&#xff0c;该数据称为 报文&#xff0c;用户数据。 运输层&#xff1a;也叫传输层&am…

【Linux】1w字详解自定义Shell管道 | 构建简易进程池

目录 续&#xff1a;通信 4 种情况 应用场景 1. 自定义 shell 管道 1. 包含头文件 2. 解析命令函数 详细步骤 3. 执行命令函数 4. 主函数 总结 2. 使用管道实现一个简易版本的进程池 代码结构 代码实现 channel.hpp tasks.hpp main.cc 子进程读取任务&#xff…

Stable Diffusion绘画 | 提示词基础原理

提示词之间使用英文逗号“,”分割 例如&#xff1a;1girl,black long hair, sitting in office 提示词之间允许换行 但换行时&#xff0c;记得在结尾添加英文逗号“,”来进行区分 权重默认为1&#xff0c;越靠前权重越高 每个提示词自身的权重默认值为1&#xff0c;但越靠…

Al+CRM:企业增长新引擎

在企业中&#xff0c;GenAI可以帮助改进决策制定、优化运营流程、增强产品和服务的创新能力&#xff0c;以及提供更加个性化的客户体验&#xff0c;在Gartner的调研中&#xff0c;AI将在以下领域发挥重要作用。 AICRM,将改变原有CRM的使用体验。把抽屉式的系统操作&#xff0c;…

【ubuntu20.04 运行sudo apt-get upgrade报错】

ubuntu20.04 运行sudo apt-get upgrade报错 1 确保系统是最新的2 检查你的软件源列表是否正确无误3 修改软件源3.1 备份原来的源3.2 更换源3.2.1 Ubuntu20.04(focal)阿里云软件源3.2.2 Ubuntu20.04清华软件源 3.3 更新软件源 4 修复升级5 重新安装特定软件包6 导入缺失的密钥 1…