【数据结构】绪论

news/2024/5/14 10:22:00/文章来源:https://blog.csdn.net/weixin_45481821/article/details/126794262

文章目录

1. 绪论

1.1 概述

1.2 数据与数据结构

1.2.1 术语

1.2.2 逻辑结构

1.2.3 存储结构:

1.2.4 数据操作:

1.3 算法

1.3.1 算法特性

1.3.2 算法目标

1.3.3 算法分析:概述

1.3.4 算法分析:时间复杂度(大O)

1.3.5 算法分析:最好、最坏、平均

1.4 回顾:西格玛Σ 求和

1. 绪论

1.1 概述

  • 算法 + 数据结构 = 程序

    • 程序:计算机指令的组合

    • 算法:程序的逻辑抽象

    • 数据结构:数据及其关系的反映,从逻辑结构和存储(物理)结构。

  • 数据结构解决具体问题:

    1. 数据的逻辑结构(数学模型)

    2. 数据的存储结构

    3. 数据操作与运算

1.2 数据与数据结构

1.2.1 术语

  • 数据(Data):数据是信息的载体,是对客观事物的符号表示。

  • 数据元素(Data Element):是数据的基本单位,是一个个体。相当于表的一行。

  • 数据项(Data Item):是数据元素的组成部分。相当于表的列。

  • 数据对象(Data Object):性质相同的数据元素的集合。相当于表。

  • 数据结构(Data Structure):特定关系的数据元素的集合。

1.2.2 逻辑结构

  • 逻辑结构:数据元素之间的逻辑关系,与数据存储无关,独立与计算机之外。

  • 数据元素按照特性:

    1. 集合:元素之间没有关系,比较松散

    2. 线性结构:元素之间存在==一对一==关系。除了开始和终端结点,其他结点由有一个前驱和一个后继。

    3. 树形结构:元素之间存在==一对多==关系。

    4. 图形结构:元素之间存在==多对多==关系。

  • 数据的逻辑结构需要2部分:数据元素(data)、数据元素的关系(relationship)

     

1.2.3 存储结构:

  • 存储结构:数据的存储结构,也称为物理结构,是数据的逻辑结构在计算机的实现。

    • 数据元素的值存储表示和逻辑关系。

  • 存储结构的4种方式:

    1. 顺序存储:在一片连续的存储空间中进行存储,元素的逻辑位置和物理位置保持一致。例如:数组

       

    2. 链式存储:可以存储在任意的物理物质上,需要额外的部分存放逻辑关系的指针。例如:链表

       

    3. 索引存储:存储数据的同时,额外的存储一个索引表。在查询时可以提高效率。

    4. 散列存储:一般情况物理上可以是连续的存储空间,需要通过散列函数hash来确定存储位置。在查询时可以提高效率。

       

1.2.4 数据操作:

  • 初始化:创建、销毁:

  • 数据操作:插入/添加、删除、修改

  • 数据使用:查找、遍历

1.3 算法

  • 算法:对特定问题求解步骤的一种描述。是指令的有限序列。

1.3.1 算法特性

  1. 有穷性:有限

  2. 确定性:需求确定、指令确定

  3. 有效性:指令都是由意义

  4. 输入:

  5. 输出:

 

1.3.2 算法目标

  1. 正确性:基本要求,需求和实现对应。

  2. 可读性:使程序员能够读懂,编写代码时可以辅助注释。

  3. 健壮性:临界值的处理、无效数据的校验等。

  4. 高效性:使用较少的资源(资源分2种:时间资源、空间资源)。一个好的算法要做到执行时所需时间尽量短,所需的最大存储空间尽量少。

1.3.3 算法分析:概述

  • 算法的复杂度是衡量算法优劣的重要依据。

  • 算法的复杂度分类:时间复杂度、空间复杂度。

    • 时间复杂度:执行时间的长短。

    • 空间复杂度:执行时空间需求量,也就是计算机资源的使用量。

1.3.4 算法分析:时间复杂度(大O)

  • 主要考虑因素:

    1. 算法本身

    2. 问题规模

    3. 程序语言选择

    4. 编译程序(JDK优劣)

    5. 硬件速度

    6. 运行软件

  • 时间复杂度通过大O表示法进行表示的

    • 大O表示法,用于估算一个算法的执行时间。

    • 算法执行时间:Σ(指令的执行次数 * 指令的执行时间)。

    • 指令的执行时间是固定的,可以不考虑。只需要考虑指令的执行次数即可。

    • 大O表达法,通过统计指令的执行次数,就可以估算出一个算法的优劣。

    • 指令的执行次数:每行代码执行的次数,将所有的次数累加在一起即可。

    • 例如1.7:2n^3 + 3n^2+2n+1 总次数表达式 --> 只考虑最高次幂 --> O(n^3)

    • 大O表达式只需要考虑最高次幂的项。

  • 大O表达式常见的形式

    • 常量阶:O(1) ,执行的次数与输入无关。

    • 线性阶:O(n) ,执行的次数与输入成正比关系。例如:一层循环。

    • 平方阶:O(n^2) , 执行的次数与输入成平方关系。例如:二层循环

    • 立方阶:O(n^3) ,执行的次数与输入成立方关系。例如:三层循环

    • 对数阶:O(log2n) , 执行的次数与输入成开方关系。例如:求对数 log28 = 3

    • 线性对数阶:O(nlog2n)

 

  • O(log2n) 指数计算:R表示次数

     

  • O (n) :一层循环

  • O(n^2):二层循环(99乘法表)

    int n = 9;
    for(int i = 0 ; i < n ; i ++) {for(int j = 0 ; j < n : j ++) {// 次数 n*n}
    }
  • O(n^3):三层循环

    int n = 9;
    for(int i = 0 ; i < n ; i ++) {             //时针for(int j = 0 ; j < n : j ++) {         //分针for(int m = 0 ; m < n ; m++) {      //秒针// 次数 n * n * n}}
    }

1.3.5 算法分析:最好、最坏、平均

  • 实例:从数组中获得内容 a[1...n]

  • 最好时间复杂度:获得最好的情况,例如:数组中的第一个数据。O(1)表示此情况。

  • 最坏时间复杂度:获得最坏的情况,例如:数据中最后一位。O(n)表示此情况。

  • 平均时间复杂度:

    • 1+...+n和 : (n+1) * n/2

    • 平均,和/n :(n+1) * n/2 / n ---> (n + 1) / 2 --> O(n)表示

  • 结论:在一般情况下,取最坏时间复杂度等概率下的平均时间复杂度作为算法的时间复杂度。

1.4 回顾:西格玛Σ 求和

 

  • 需求:1+2+3+4+....+n

     

    $$
    \sum_{i=1}^{n}\dfrac{(n+1)*n}{2} \tag{西格玛Σ求和}
    $$

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Markdown笔记软件之 Obsidian

我使用过什么markdown笔记软件了解自己的需求 Markdown 语法简洁vscode内置 markdown 插件,预览等 snippet(摘要功能)自定义代码片段typero实时渲染,所见即所得 美观缺点不适合我个人 收费 不支持打标签 tag 放弃:解决不了我的痛点(全键盘),收费 不支持移动端joplin支持 v…

模拟用户登录功能的实现以及演示SQL注入现象

模拟用户登录功能的实现以及演示SQL注入现象 /* 实现功能&#xff1a;1、需求&#xff1a;模拟用户登录功能的实现。2、业务描述&#xff1a;程序运行的时候&#xff0c;提供一个输入的入口&#xff0c;可以让用户输入用户名和密码用户输入用户名和密码之后&#xff0c;提交信息…

Day07__面向对象

面向对象 什么是面向对象回顾方法的定义 package objectOriented;import java.io.IOException;//回顾方法的定义 public class Demo01 {public static void main(String[] args) {}public static String sayHello(){return "Hello,World!";}public int max(int a,int…

Deno 会取代NodeJS吗?

目标:了解Deno的学习价值和前景。 从下面几个维度进行分析 成熟度 Node已经在大量商业应用中,Deno只是还在商业试验阶段 生态 Node已经有丰富的生态,包含各种框架和库,并且都已经广泛应用Deno的框架和库基本上都是刚刚起步 学习成本 如果你已经了解Node,Deno也还是需要不…

基于蜜蜂算法求解电力系统经济调度(Matlab代码实现)

目录 1 蜜蜂优化算法 1.1 蜂群觅食机制 1.2 蜜蜂算法 1.3 流程 2 经济调度 3 运行结果 4 Matlab代码及文章 5 参考文献 6 写在最后 1 蜜蜂优化算法 蜜蜂算法( Bees Algorithm&#xff0c;BA) 由英国学者 AfshinGhanbarzadeh 和他的研究小组于 2005 年提出。该算法是一…

element table 列头和行高调整

1、行高调整<el-table :row-style="{height:0}"></el-table>2、列头高度调整<el-table :header-cell-style="{padding:0}" :row-style="{height:0}"></el-table>

都这麽大了还不了解防火墙?

目录 一、思考 二、实验 三、过程 1、实验拓扑 2、cloud-IO配置 3、防火墙配置 3.1 登录防火墙 4、区域划分 方法一 方法二 4.1 内网划分 4.2 各区域网关 4.3 区域配置 5、防火墙策略 5.1 允许-回程路由&#xff08;内网~外网&#xff09; 5.2 禁止-新建策略…

AI作画飞入平民百姓家——stable diffusion初体验

1. 前言 stable_diffusion来了&#xff0c;这个号称是最强的民用文本生成图片的模型它来了&#xff0c;相比较DAEE等大模型&#xff0c;它能够让我们消费级的显卡也能够实现文本到图像的生成。下面&#xff0c;我们也来试一下。 2. 准备过程 该服务器上必须要有的基础工具an…

[基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式]

基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式内核menuconfig配置内核dts配置文件系统配置和更改驱动编译wifi工具编译libnl库编译openssl编译wpa_supplicant编译hostapd编译开机运行脚本测试WIFI—STA模式运行脚本测试WIFI-AP模式内核menuconfig配置 CONFIG_NETFIL…

高光谱图像分类简述+《Deep Learning for Hyperspectral Image Classification: An Overview》综述论文笔记

论文题目《Deep Learning for Hyperspectral Image Classification: An Overview》 论文作者:Shutao Li, Weiwei Song, Leyuan Fang,Yushi Chen, Pedram Ghamisi,Jn Atli Benediktsson 论文发表年份:2019 一、高光谱简述高光谱成像是一项重要的遥感技术,它采集了从…

SQL server 2008 安装教程

SQL server 2008 安装教程 1. 安装 SQL server 2008 的主要步骤如下 1.1 点击 setup.exe1.2 选中 “安装”&#xff0c;并点击右边的 “全新 SQL sever 独立或向现有安装添加功能1.3 重启电脑&#xff0c;再找到安装程序 “setup.exe” 重复上面的步骤1.4 输入产品秘钥 “JD8Y…

The Art of Prompting: Event Detection based on Type Specific Prompts

Motivation之前的研究表明prompt可以提高模型在事件检测方面的性能,包括使用特定structure 使用每种事件类型特定的query 原型 trigger这些尝试启发对不同prompt效果的探究Settings 作者在3种setting下做了实验:Supervised event detection Few-shot Event detection两个数据…

对课上相关问题的研究和解答

问题一:从测试中看不足 1、JAVA的基本运行单位是类 2、类中由类变量和类方法共同组成 3、变量的类型相互之间存在可以转换的关系,具体来说,可以分为以下几种情况: 1、(byte、short、char)-int-long-float-double,从低级到高级的排序,数据类型可以直接由低级向高级转换 举…

SpringCloud微服务架构

什么是微服务 微服务架构的基础是将的那个应用程序开发为一组小型独立服务&#xff0c;这些独立服务在自己的进程中运行&#xff0c;独立开发和部署。 SpringCloud Alibaba微服务&#xff1a; Spring Cloud Alibaba 是Spring Cloud的一个子项目&#xff0c;致力于提供微服务…

9--RNN

有隐藏状态的循环神经网络 假设在时间步t有小批量输入&#xff0c;即对于n个序列样本的小批量&#xff0c;的每一行对应于来自该序列的时间步t处的一个样本&#xff0c;用表示时间步t的隐藏变量。与MLP不同的是&#xff0c; 我们在这里保存了前一个时间步的隐藏变量&#xff0c…

《Mycat分布式数据库架构》之数据切分实战

文章目录1、引言2、前期准备2.1 系统环境2.2 数据库集群3 注意事项3.1 分片原则3.2 如何选择分片键4 数据切分实战4.1 配置访问用户及权限4.2 配置逻辑库及逻辑表4.3 配置分片规则4.3.1 简单取模分片4.3.2 哈希取模分片4.3.3 枚举分片4.3.4 字符串范围取模分片前文回顾&#xf…

Selenium操作已经打开的Chrome(只怪自己尝试的太迟)

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f970; 博客首页&#xff1a;…

抖音视频

刻度尺读取方法0n:/ 复制打开抖音,看看【天子骄龙的作品】初中物理-刻度尺读数 ηηQ2VtW0nGyv8▽▽ 秒表读取方法 8.76 aNW:/ 复制打开抖音,看看【天子骄龙的作品】初中物理-秒表读数# 专业的事交给专业的人 初中物理... https://v.douyin.com/6RTySK2/

微信支付v3

文章目录前言1. 微信支付产品介绍2 接入指引2.1 获取商户号2.2 获取appid2.3 获取密钥和证书3 支付安全3.1 对称加密和非对称加密3.2 身份认证3.3 数字证书3.4 https中的数字证书3.5 微信支付中的证书密钥和签名4 基础支付apiv34.1 基础支付APly3-引入支付参数4.2 基础支付APly…

frame标签使用

当页面采用框架集的时候,如果点击,某个部分想在当前页面跳转到一个全新的无框架集的页面,可以在超链接中指定 target属性,如果指定为_top,则是整个页面,也可以指定某个frame 。 默认的几种值有: _self:当前frame(或者当前部分) _blank:打开新的一个窗口 _parent:当…