【数据结构】数据结构前置知识

这里写目录标题

  • 基本概念与术语
    • 数据
    • 数据元素
    • 数据项
    • 数据对象
    • 数据结构
  • 逻辑结构和物理结构
    • 物理结构
      • 顺序存储结构
      • 链式存储结构
    • 逻辑结构
      • 集合结构
      • 线性结构
      • 树形结构
      • 图形结构
  • 算法
    • 时间复杂度和空间复杂度
      • 大O的渐进表示法
      • 时间复杂度
        • 常数阶
        • 线性阶
        • 对数阶
        • 平方阶
        • 常见时间复杂度
      • 空间复杂度
    • 最好情况与平均情况于最坏情况

基本概念与术语

概念皆来自于《大话数据结构》。

数据

数据的概念:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别并输入给计算机处理的符号集合。
其实就是可以输入到计算机中,可以被计算机处理的字符。像文件,图像,声音,数字等等都是可以通过编码转换为字符来处理。

数据元素

数据元素的概念:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也称为记录。

就像数学中由多个集合(子集合)构成的集合。子集就像数据元素一样

数据项

数据项概念:一个数据元素可以由若干个数据项组成。
数据项就像集合中的元素。

数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。

关系
用∈代替一下‘包含于’关系
数据项∈数据元素∈数据对象∈数据

数据结构

数据结构概念:是互相之间存在一种或多种特定关系的数据元素的集合。

逻辑结构和物理结构

这是根据视点来区分的数据结构。

物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式。

顺序存储结构

是把数据元素存放在地址连续的存储单元里,其数据间的逻辑结构关系和物理结构关系是一致的。

链式存储结构

是把数据元素存放在任意位置的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

逻辑结构

是指数据对象中数据元素之间的相互关系。

集合结构

集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。

线性结构

线性结构中的数据元素之间是一对一的关系。

树形结构

树形结构中的数据元素之间存在一种一对多的层次关系。

图形结构

图形结构中的数据元素是多对多的关系。

算法

算法的定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列。并且每条指令表示一个或多个操作。
算法五大特性:输入,输出,有穷性,确定性,可行性。

当多个算法都可以解决问题(在保证了正确性、可读性、健壮性),我们一般要考虑算法的时间效率,空间效率。我们就要用时间复杂度和空间复杂度来衡量。

时间复杂度和空间复杂度

其实我们要求时间复杂度就把语句执行次数给加起来表示为一个函数,空间复杂度开辟空间次数加起来表示为一个函数。然后将函数由大O的渐进表示法来表示。求得的就是复杂度。

我们通常使用大O的渐进表示法来表示时间复杂度和空间复杂度。

大O的渐进表示法

规则:
1.用常数1来取代运行时间中的所有加法常数;
2.在修改后的运行次数函数中,只保留最高阶项;
3.如果最高阶项存在且系数不为1,则将系数修改为1。

时间复杂度

常数阶
int n = 100;
int sum = (n+1)*n/2;

这个高斯公式求和就是函数为3,常数都表示为1,大O渐进法(时间复杂度)表示就是O(1)。

线性阶
int n = 100;
int sum = 0;
for(int i = 0; i < n; i++){sum += i; 
} 

这个求和就是函数为n+2,保留最高阶,大O渐进法(时间复杂度)表示就是O(n)。

对数阶
int count = 1;
while(count < n){count *= 2;
}

这个就是函数为logN+1,保留最高阶,大O渐进法(时间复杂度)表示就是O(logN)。

平方阶
for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){System.out.print("0 ");}
}

这个的函数为nn + 1,保留最高阶,大O渐进法(时间复杂度)表示就是O(nn)。

常见时间复杂度

O(1) < O(logN) < O(N) < O(NlogN) < O(NN) < O(2^N) < O(N!) < O(N*N)

空间复杂度

空间复杂度和时间复杂度求法完全一样,只不过是将执行次数变为开辟空间次数。

int factorial(int N) {return N < 2 ? N : factorial(N-1)*N;
}

如上面代码每一次调用都要开辟一次,递归了N次。空间复杂度就是O(N)。

最好情况与平均情况于最坏情况

最好情况就是当前要解决的问题完全契合当前算法。像写一个冒泡排序,给的数组本身就是有序的,此时直接返回值时间复杂度就是O(1)。

平均情况就是所有情况中最有意义的,因为它是期望的运行时间。

最坏情况,一般不说明我们像上面将诉的方法求的复杂度一般是最坏情况。

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

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

相关文章

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标&#xff0c;点击后选择“Edit Connections”选项&#xff0c;进入选择网络连接页面&#xff0c;然后点击左下角加号&#xff0c;新建一个连接&#xff0c;类型选择 WiFi 后点击 “cre…

在TkinterGUI界面显示WIFI网络(ESP32s3)摄像头画面

本实验结合了之前写过的两篇文章Python调用摄像头&#xff0c;实时显示视频在Tkinter界面以及ESP32 S3搭载OV2640摄像头释放热点&#xff08;AP&#xff09;工作模式–Arduino程序&#xff0c;当然如果手头有其他可以获得网络摄像头的URL即用于访问摄像头视频流的网络地址&…

【笔记】从零开始做一个精灵龙女-拆uv阶段

目录 先回顾一下拆uv的基础流程吧 肩部盔甲分UV示例 手环UV部分 腰带UV部分 其它也差不多&#xff0c;需要删掉一半的就先提前删掉一半&#xff0c;然后把不需要的被遮挡的面也删掉 龙角UV 胸甲UV 侧边碎发UV 马尾UV 脸部/耳朵UV 特殊情况&#xff1a;如果要删一半再…

MacOS 安装 Maven 并配置环境变量

一、简介 Maven 是一款基于 Java 平台的项目管理和整合工具&#xff0c;用来构建项目的。也就是清理、编译、测试、运行、打包、安装整个过程都交给 Maven 管理&#xff0c;整个过程就是构建。 二、安装 Java JDK Maven 依赖 Java JDK&#xff0c;如果本机没有安装过 Java 的…

Web后端开发之前后端交互

http协议 http ● 超文本传输协议 &#xff08;HyperText Transfer Protocol&#xff09;服务器传输超文本到本地浏览器的传送协议 是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。 HTTP是一个基于TCP/IP通信协议来传递数据. HTT…

智慧校园-办公管理系统总体概述

智慧校园行政办公系统是专为高校及教育机构定制的数字化办公解决方案&#xff0c;它整合了众多办公应用与服务&#xff0c;旨在全面提升校园行政管理的效率与便捷性&#xff0c;推动信息的自由流动&#xff0c;实现绿色无纸化办公环境。该系统作为一个综合平台&#xff0c;将日…

大数据面试题之Spark(5)

Spark SQL与DataFrame的使用? Sparksql自定义函数?怎么创建DataFrame? HashPartitioner和RangePartitioner的实现 Spark的水塘抽样 DAGScheduler、TaskScheduler、SchedulerBackend实现原理 介绍下Sparkclient提交application后&#xff0c;接下来的流程? Spark的几种…

VMware中的三种虚拟网络模式

虚拟机网络模式 1 主机网络环境2 VMware中的三种虚拟网络模式2.1 桥接模式2.2 NAT模式2.3 仅主机模式 3 网络模式选择及配置NAT模式3.1 VMware虚拟网络配置3.2 虚拟机选择网络模式3.3 Windows主机网络配置 4 配置静态IP 虚拟机联网方式为桥接模式&#xff0c;这种模式下&#x…

利用OGG搭建灾备环境保姆级操作步骤

系统灾备环境搭建,使用OGG同步数据,包括&#xff1a;nfs共享磁盘、acfs新增卷组、ogg目录创建、ogg安装、ogg搭建、数据导出、导入等。 一、工作内容 1.使用NFS共享一块存储&#xff0c;用于生产环境与灾备环境之间&#xff0c;数据泵导出的dump文件存放; #生产环境新建OGG软…

c++ 设计模式 的课本范例(下)

&#xff08;19&#xff09; 桥接模式 Bridge&#xff0c;不是采用类继承&#xff0c;而是采用类组合&#xff0c;一个类的数据成员是类对象&#xff0c;来扩展类的功能。源码如下&#xff1a; class OS // 操作系统负责绘图 { public:virtual ~OS() {}virtual void draw(cha…

拼多多滑块逆向

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(lianxi …

花生壳 搭建服务器

使用花生壳来搭建服务器。下面是一个基本的步骤指南&#xff0c;帮助您完成搭建过程&#xff1a; 注册花生壳账号&#xff1a; 访问花生壳官网&#xff08;https://hsk.oray.com/&#xff09;&#xff0c;点击注册账号。根据提示填写相关信息&#xff0c;完成账号注册。 下载并…

js懒加载

懒加载&#xff08;Lazy Loading&#xff09;是一种在网页加载过程中延迟加载某些资源的技术。在JavaScript中实现懒加载的方式有很多&#xff0c;下面是其中一种简单的实现方式&#xff1a; 1. 首先&#xff0c;给需要懒加载的元素添加一个特定的class&#xff08;例如"l…

uniapp中使用threejs加载几何体

我的建议是使用这个库 https://github.com/deepkolos/three-platformize 为什么&#xff1f;我试了uniapp推荐的和threejs-miniprogram这个小程序官方库&#xff0c;都加载不出来我的obj模型。所有我推荐不要用obj模型最好&#xff0c;挺多都支持GLTF模型的&#xff0c;但是我不…

基于ssm口红商城管理的设计与实现

一、&#x1f468;‍&#x1f393;网站题目 口红商城项目可以提供更加便捷和高效的购物方式。消费者可以在家中使用电脑或手机随时随地购物&#xff0c;避免了传统购物方式中需要花费时间和精力去实体店铺购物的麻烦。此外&#xff0c;口红商城项目还提供了更多的选择和更低的…

【Android面试八股文】性能优化相关面试题:什么时候会发生内存泄漏?举几个你遇到过的例子

内存泄漏通常发生在程序中某些对象被分配了内存但在不再需要时未能正确释放,导致这部分内存无法被垃圾回收器回收,最终造成系统内存的浪费和性能问题。 以下是一些常见的内存泄漏示例: 未关闭资源: 当使用了需要手动关闭的资源(如文件、数据库连接、网络连接等),但在使…

2D 激光 SLAM-Cartographer 实战

源码 https://github.com/cartographer-project/cartographer https://github.com/cartographer-project/cartographer_ros 课 程 下 的 注 释 版 代 码 &#xff1a; https://github.com/xiangli0608/cartographer_detailed_comments_ws 备用地址&#xff1a; https://gi…

复分析——第8章——共形映射(E.M. Stein R. Shakarchi)

第8章 共形映射(Conformal Mappings) The results I found for polygons can be extended under very general assumptions. I have undertaken this research because it is a step towards a deeper understanding of the mapping problem, for which not much has hap…

C++视觉开发 二.OpenCV基础

目录 本章记录OpenCV开发中的基本操作语法 一.基础 1.读取图像 2.显示图像 3.保存图像 二.图像 1.像素处理 2.彩色图像 三.滤波 1.高斯滤波&#xff08;Gaussian Blur&#xff09; 功能&#xff1a; 高斯滤波是一种常用的线性平滑滤波器&#xff0c;用于降低图像噪声…

绕过HTTP401和403响应限制工具

目录 介绍 开发语言 特征 动态 安装使用 参数 示例用法 工具地址 介绍 一种旨在自动化各种技术的工具,以绕过HTTP 401和403响应代码并访问系统中未授权的区域。此代码是为安全爱好者和专业人士只。使用它在您自己的风险。 开发语言 Python3 特征 探测HTTP 401和403…