数据结构(绪论+算法的基本概念)

文章目录

  • 一、绪论
    • 1.1、数据结构的基本概念
    • 1.2、数据结构三要素
      • 1.2.1、逻辑结构
      • 1.2.2、数据的运算
      • 1.2.3、物理结构(存储结构)
      • 1.2.4、数据类型和抽象数据类型
  • 二、算法的基本概念
    • 2.1、算法的特性
    • 2.2、“好”算法的特质
      • 2.2.1、算法时间复杂度
      • 2.2.2、算法空间复杂度

一、绪论

1.1、数据结构的基本概念

数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

数据元素、数据项数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位
在这里插入图片描述
在这里插入图片描述
数据对象是具有相同性质的数据元素的集合,是数据的一个子集
数据结构是相互之间存在一种或多种特定关系的数据元素的集合

1.2、数据结构三要素

1.2.1、逻辑结构

集合: 各个元素同属于一个集合,别无其他关系

线性结构: 数据元素之间是一对一的关系。除了第一个元素,所有元素都有唯一前驱除了最后一个元素,所有元素都有唯一后继
在这里插入图片描述
树形结构: 数据元素之间是一对多的关系
在这里插入图片描述
图结构: 数据元素之间是多对多的关系
在这里插入图片描述

1.2.2、数据的运算

针对于某种逻辑结构,结合实际需求,定义基本运算
在这里插入图片描述

1.2.3、物理结构(存储结构)

线性结构:

顺序存储把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
在这里插入图片描述
链式存储。逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
在这里插入图片描述
索引存储。在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)
在这里插入图片描述
散列存储。根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储

  1. 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的
  2. 数据的存储结构会影响存储空间分配的方便程度
  3. 数据的存储结构会影响对数据运算的速度

运算的定义是针对逻辑结构指出运算的功能的
运算的实现是针对存储结构的,指出运算的具体操作步骤。

1.2.4、数据类型和抽象数据类型

数据类型是一个值的集合和定义在此集合上的一组操作的总称。
1)原子类型。其值不可再分的数据类型。
2)结构类型。其值可以再分解为若干成分(分量)的数据类型。

在这里插入图片描述
在这里插入图片描述

抽象数据类型(Abstract Data Tvpe,ADT)是抽象数据组织及与之相关的操作。

二、算法的基本概念

2.1、算法的特性

程序=数据结构+算法
数据结构:如何用数据正确地描述现实世界的问题,并存入计算机
算法:如何高效的处理这些数据,以解决实际的问题

有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。
确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

2.2、“好”算法的特质

  1. 正确性:算法应能够正确地解决求解问题。
  2. 可读性:应具有良好的可读性,以帮助人们理解。
  3. 健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
  4. 高效率与低存储量需求
    时间复杂度和空间复杂度

2.2.1、算法时间复杂度

事前预估算法时间开销T(n)与问题规模n的关系(T表示“time”)
在这里插入图片描述
在这里插入图片描述
时间复杂度,可以只保留阶数更高的部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论1:顺序执行的代码只会影响常数项,可以忽略
结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可
结论3:如果有多层嵌套循环,只需关注最深层循环循环了几次
小练习
在这里插入图片描述
计算上述算法的时间复杂度T(n):
设最深层循环的语句频度(总共循环的次数)为x,则由循环条件可知,循环结束时刚好满足2x>n
x=log2n+1
T(n)=O(x)=O(log2n) 把O(1)舍去了

在这里插入图片描述

在这里插入图片描述

2.2.2、算法空间复杂度

在这里插入图片描述
空间(space)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
函数递归调用带来的内存开销
在这里插入图片描述
在这里插入图片描述
空间复杂度等于递归调用的深度

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

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

相关文章

【Linux】:线程安全的单例模式

线程安全的单例模式 一.STL和智能指针的安全二.单例模式1.基本概念2.懒汉和饿汉的实现方式 三.常见的其它锁四.读者写者模型 一.STL和智能指针的安全 1.STL中的容器是否是线程安全的? 不是. 原因是, STL 的设计初衷是将性能挖掘到极致, 而一旦涉及到加锁保证线程安全, 会对性…

[SwiftUI]系统弹窗和自定义弹窗

一、系统弹窗 在 SwiftUI 中,.alert 是一个修饰符,用于在某些条件下显示一个警告对话框。Alert 可以配置标题、消息和一系列的按钮。每个按钮可以是默认样式、取消样式,或者是破坏性的样式,它们分别对应不同的用户操作。 1.Aler…

Spring 的存储和获取Bean

文章目录 获取 Spring 上下文对象的方式存储 Bean 对象的方式类注解配置扫描路径(必须)Controller(控制器存储)Service(服务)Repository(持久层)Component(工具&#xff…

【Spring】Spring简介、IOC、DI

目录 Spring简介 Spring Framework五大功能模块 IOC容器 IOC思想 IOC容器在Spring中的实现 基于XML管理bean 配置bean 获取bean 依赖注入之setter注入 依赖注入之构造器注入 特殊值处理 字面量赋值 null值 xml实体 CDATA节 为类类型属性赋值 为数组类型属性赋值 为集合类型属性…

JavaScript 学习笔记(JS进阶 Day1)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. JavaScript 学习笔记(Day1) 2. JavaSc…

适用于 Windows 11 的 12 个最佳免费 PDF 编辑器

除了绘图等基本功能外,一些适用于 Windows 11 的免费 PDF 编辑器还具有 AI、OCR 识别和书签等高级功能。 我们的列表包含易于立即下载的 PDF 编辑软件工具。 这些工具不仅可以帮助转换 PDF、编辑、上传、删除、裁剪、分割、提取等。 PDF 是指便携式文档格式&…

单片机学习笔记---独立按键控制LED亮灭

直接进入正题! 今天开始我们要学习一个新的模块:独立按键! 先说独立按键的内部结构: 它相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实…

剧本杀小程序开发:打造沉浸式推理体验

随着社交娱乐形式的多样化,剧本杀逐渐成为年轻人喜爱的聚会活动。而随着技术的发展,剧本杀小程序的开发也成为了可能。本文将探讨剧本杀小程序开发的必要性、功能特点、开发流程以及市场前景。 一、剧本杀小程序开发的必要性 剧本杀是一种角色扮演的推…

鸿蒙端云一体化简单项目

文章目录 前言端云一体化服务端客户端云数据库总结 一、前言 鸿蒙系统在不断地成熟,现在有了鸿蒙端云一体化开发模式。什么是端云一体化呢,简单点就是你原本是客户端开发的,项目中只是客户端的代码,端云一体化呢,就…

【MyBatis】#{} 和 ${}

目录 1. #{} 使用示例: 2. ${} 使用示例: SQL注入 使用#{}的情况: 使用${}的情况: MyBatis是一种用于Java语言的持久层框架,它简化了数据库操作的过程。在MyBatis中,我们经常会看到两种不同的参数占…

华为云WAF,开启web网站的专属反爬虫防护罩

背景 从保护原创说起 作为一个原创技术文章分享博主,日常除了Codeing就是总结Codeing中的技术经验。 之前并没有对文章原创性的保护意识,直到在某个非入驻的平台看到了我的文章,才意识到,辛苦码字、为灵感反复试验创作出来的文…

苹果macOS 恶意软件家族被曝光:通过破解软件分发,可窃取敏感信息

卡巴斯基安全实验室近日发布博文,发现了一种针对苹果 macOS 设备的新型恶意软件家族,并提醒苹果 Mac 用户谨慎下载破解软件。 报告称这种新型恶意软件家族高度复杂,主要伪装成为各种知名 macOS 软件的破解版分发,用户下载恶意 PKG…

ISO 14229和UDS:汽车诊断的黄金标准

UDS简介: UDS是Unified Diagnostic Services的缩写,全名统一诊断服务。它是一种用于汽车电子控制单元(ECU)之间进行诊断和通信的标准协议,属于ISO 14229标准的一部分。 UDS的起源和背景: UDS的起源可以追…

HarmonyOS 鸿蒙应用开发 (七、HTTP网络组件 axios 介绍及封装使用)

在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。推荐使用前端开发中流行的axios网络客户端库,如果是前端开发者,用 axios也会更加顺…

Java笔记(死锁、线程通信、单例模式)

一、死锁 1.概述 死锁 : 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法往下执行。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进…

vusui css 使用,简单明了 适合后端人员 已解决

vusui-cssopen in new window 免除开发者繁复的手写 CSS 样式,让 WEB 前端开发更简单、灵活、便捷!如果喜欢就点个 ★Staropen in new window 吧。 移动设备优先: vusui-css 包含了贯穿于整个库的移动设备优先的样式。浏览器支持&#xff1a…

【每日一题】最大合金数

文章目录 Tag题目来源解题思路方法一:二分枚举答案 写在最后 Tag 【二分枚举答案】【数组】【2024-01-27】 题目来源 2861. 最大合金数 解题思路 方法一:二分枚举答案 思路 如果我们可以制造 x 块合金,那么一定也可以制造 x-1 块合金。于…

《合成孔径雷达成像算法与实现》Figure5.18

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

【C++干货铺】C++中的IO流和文件操作

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 C语言的输入输出 流是什么? C的IO流 C标准IO流 C文件IO流 文本文件读写 二进制文件的读写 stringstream的简单介绍 将数值类型数据格式化为字…

JS中的try...catch

一、定义和结构 作用:捕获同步执行代码下的异常错误 在没有使用try...catch的情况下,同步代码执行遇到异常会报错,并中断后续代码执行; 在使用try...catch的情况下,同步代码执行遇到异常会抛出异常,并继续…