数据结构的基本概念与算法

数据结构的基本概念与算法

什么是数据?

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

数据元素、数据项:

        数据元素就是数据的基本单位,通常作为一个整体进行考虑和处理;一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位;如下图所示 ->

再简单的说就是,数据元素可以看成 - 类,数据项可以看成 - 成员属性;



数据结构:

        数据结构是相互之间存在一种或多种特定关系的数据元素的集合;三大要素 ->

要素1: - 逻辑结构:

        1.集合 -> 各个元素同属于一个集合,别无其他关系

        2.线性结构 -> 数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继;

        3.树形结构 -> 数据元素之间是一对多的关系

        4.图状结构(网状结构)-> 数据元素之间是多对多的关系

要素2 - 物理结构(存储结构):

        1.顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中

        2.链式存储:逻辑上相邻的元素在物理位置上可以不相邻(注意:这里的意思是可以相邻,也可以不相邻)

        3.索引存储:在存储元素信息的同时,还建立附加的索引表

        4.散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储

算法 - 什么是算法 ->

        数据结构:如何把显示世界的问题信息化,将信息存进计算机;同时还要实现对数据结构的基本操作;

        算法:如何处理这些信息,已解决实际问题;

        程序 = 数据结构 + 算法;

算法的五个特性:

        1.有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成;

        2.确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出;

        3.可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现;

        4.输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合;

        5.输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定的关系的量;

算法 - 算法效率的度量:

算法效率的度量:

        1.时间复杂度 -> 时间开销与问题规模 n 之间的关系;

        2.空间复杂度 -> 空间开销(内存开销)与问题规模 n 之间的关系;

算法 - 时间复杂度:

public static void test(int n) {                // 第 1 行System.out.println("输出1 ->");             // 第 2 行 for(int i = 0;i < n;i++) {                 // 第 3 行System.out.println("输出2 ->");        // 第 4 行System.out.println("输出3 ->");        // 第 5 行}                                         // 第 6 行System.out.println("输出4 ->");           // 第 7 行
}                                             // 第 8 行public static void main(String[] args) {    // 第 9 行test(3000);                             // 第 10 行
}                                           // 第 11 行

上述代码中 语句频度 ->

第二行 -------    1次
第三行 -------    3001次
第四行、第五行 ------- 3000次
第七行 ------- 1次

所以可以这么计算时间复杂度 -> T(3000) = 1+ 3001 + 2*3000 +1 ;

在 main 函数中调用 test() 方法传递的参数是 3000 所以这里将 3000 替换成 n 可以得到:
T(n) = 3n + 3;

在问题规模足够大时,常数项可以忽略,最高阶数的常数部分也可以忽略不计,所以最后得到
T(n) = o(n)

多项相加只保留最高次方的项切忽略该项的常数部分,多项相乘的时候需要都保留,来看下面几个例子:

                    T1(N) = 3n + 3    ------------>    简化后得到:T1(n) = O(n)

       T2(n) = n^2 + 3n +1000   ------------>    简化后得到:T2(n) = O(n^2)

T3(n) = n^3 + n^2 + 999999   ------------->   简化后得到:T3(n) = O(n^3)

算法 - 空间复杂度:

        无论问题规模怎么变,算法运行所需的内存空间都是固定的常量;

        算法空间复杂度为 S(N) = O(1)  【 注释:S 表示 space 】

        算法原地工作 —— 算法所需内存空间为常量

        只需要关注存储空间大小问与问题规模相关的变量

        在我们日常开发中递归函数是带来内存开销的常用函数之一 -> 
S(n) = O(n)    -------     空间复杂度 = 递归函数调用的深度,下面是复杂度大小排列顺序:

O(1)  <  O(log2n)  <  O(n)  <  O(nlog2n)  <  O(n^2)  <  O(n^3)  <  O(2^n)  <  O(n!)  <  O(n^n)

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

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

相关文章

<数据集>棉花识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;13765张 标注数量(xml文件个数)&#xff1a;13765 标注数量(txt文件个数)&#xff1a;13765 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Partially opened, Fully opened boll, Defected boll, Flower] 序…

Java面试——Tomcat

优质博文&#xff1a;IT_BLOG_CN 一、Tomcat 顶层架构 Tomcat中最顶层的容器是Server&#xff0c;代表着整个服务器&#xff0c;从上图中可以看出&#xff0c;一个Server可以包含至少一个Service&#xff0c;用于具体提供服务。Service主要包含两个部分&#xff1a;Connector和…

SQL labs-SQL注入(七,sqlmap对于post传参方式的注入,2)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。参考&#xff1a;SQL注入之Header注入_sqlmap header注入-CSDN博客 序言&#xff1a; 本文主要讲解基于SQL labs靶场&#xff0c;sqlmap工具进行的post传参方式的SQL注入&#xff0c…

【Java版数据结构】初识泛型

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;Java版数据结构 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1…

【全国大学生电子设计竞赛】2024年E题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

快速查找WGS1984 坐标地理坐标系转UTM投影坐标的多种方法

在arcgis中如果是要计算长度或面积&#xff0c;则需要将矢量图层地理坐标系转为投影坐标系&#xff0c;下面总结了几种快速找到“WGS 1984”&#xff08;UTM ZONE&#xff09;投影带号的方法。 一、准备工作 软件&#xff1a;arcmap 示例数据&#xff1a;安微省shp矢量图 二…

删除链表的倒数第N个结点(LeetCode)

题目 给你一个链表&#xff0c;删除链表的倒数第个结点&#xff0c;并且返回链表的头结点。 示例1&#xff1a; 输入&#xff1a;&#xff0c; 输出&#xff1a; 示例2&#xff1a; 输入&#xff1a;&#xff0c; 输出&#xff1a; 示例3&#xff1a; 输入&#xff1a;&#x…

申瓯通信设备有限公司在线录音管理系统(复现过程)

漏洞简介 申瓯通信设备有限公司在线录音管理系统 index.php接口处存在任意文件读取漏洞&#xff0c;恶意攻击者可能利用该漏洞读取服务器上的敏感文件&#xff0c;例如客户记录、财务数据或源代码&#xff0c;导致数据泄露 一.复现过程 fofa搜索语句:title"在线录音管…

【Vue3】标签的 ref 属性

【Vue3】标签的 ref 属性 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。…

Ubuntu22.04手动安装fabric release-2.5版本

这个过程稍微有点复杂&#xff0c;但完整操作完成以后会对Fabric网络有更加深入的理解&#xff0c;方便后续自己手动搭建Fabric网络。这个过程需要手动逐个下载Fabric源代码、使用命令下载Fabric镜像和用Git下载例子程序。 Fabric源代码主要用途是用来编译cryptogen、configtx…

二叉搜索树(图解)

文章目录 二叉搜索树的概念插入查找二叉搜索树的删除操作删除单孩子和叶子节点。del节点有两个孩子用左子树的最大节点替代用右子树的最小节点替代 弊端 二叉搜索树的概念 对于每颗子树&#xff0c;左子树 < 根&#xff0c;右子树 > 根。 二叉搜索树有以下操作&#xff1…

代码随想录二刷(哈希表)

代码随想录二刷(哈希表) 三数之和思路反正对于我来说是真的难想出来。 若这道题还是采用哈希表的思路去做&#xff0c;非常麻烦&#xff0c;并且还要考虑去重的操作。所以这道题其实用双指针&#xff0c;是更方便的。 具体程序如下&#xff1a; class Solution:def threeSu…

Docker简介和Docker常见命令

目录 1. Docker 简介 1.1 Docker 的核心概念 1.2 Docker 的优势 1.3 Docker 工作流程 2. 常见命令 2.1 基本命令 2.2 镜像操作 2.3 容器操作 2.4 网络操作 2.5 卷操作 2.6 日志和监控 2.7 清理命令 3. 注意事项和最佳实践 3.1 镜像操作 3.2 容器操作 3.3 网络操…

2.1、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、前言 在 MATLAB 中进行绘图是一种非常常见且实用的操作,可以用来可视化数据、结果展示、分析趋势等。通过 MATLAB 的绘图功能,用户可以创建各种类型的图形,包括线图、散点图、柱状图、曲线图等,以及三维图形、动画等复杂的可视化效果。 在绘图之前,通常需要先准备好要…

docker部署容器端口占用问题

docker部署容器端口占用问题 当我在使用 Windows 下使用 Docker Desktop 部署docker容器时经常性发生容器启动失败的提示&#xff0c;并且有的时候重启电脑后就能成功启动容器&#xff0c;这是因为 Hyper-V 引起的 保留端口&#xff0c;这部分端口将会被系统保留&#xff0c;无…

基于SpringBoot+Vue的企业客户信息反馈平台(带1w+文档)

基于SpringBootVue的企业客户信息反馈平台(带1w文档) 基于SpringBootVue的企业客户信息反馈平台(带1w文档) 企业客户信息反馈平台的开发运用java技术&#xff0c;MIS的总体思想&#xff0c;以及MYSQL等技术的支持下共同完成了该平台的开发&#xff0c;实现了企业客户信息反馈管…

【C++】哈希容器

unordered系列关联式容器 在之前的博文中介绍过关联式容器中的map与set&#xff0c;同map与set一样&#xff0c;unordered_set与unordered_set也是关联式容器。 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;查询效率可以达到logN&#xff1b;在…

安装 Terraform for Tencent 使用

第一步 &#xff1a;下载安装包 前往 Terraform 官网&#xff0c;使用命令行直接安装 Terraform 或下载二进制安装文件。 解压并配置全局路径 Linux/MAC&#xff1a;export PATH$PATH:${可执行文件所在目录} 例如&#xff1a;export PATH$PATH:$/usr/bin/terraform Win…

vue2学习 -- 核心语法

文章目录 前置简介1. 模板语法2. 数据2.1 数据绑定2.2 el与data的两种写法2.3 MVVM模型2.4 Object.defineProperty2.5 Vue中的数据代理 3. 事件3.1 事件处理3.2 事件修饰符3.3 键盘事件 4. 计算属性5. 监视(侦听)属性5.1 书写形式5.2 深度监视5.3 简写形式5.4 计算属性和监听属…

Go语言生成excel、将excel保存到本地、将多个excel表格压缩为压缩包、在压缩文件上传OSS删除本地excel文件和压缩包

最近在公司了个需求&#xff0c;主要涉及到文件导出&#xff0c;需要根据特定表格文件生成excel文件导出&#xff0c;同时对导出的excel临时保存本地&#xff0c;生成压缩包&#xff0c;将压缩包上传至OSS&#xff08;Object Storage Service&#xff09;后删除本地临时文件。下…