数据结构集合框架与大O渐进表示法

news2024/11/15 4:16:56

作者:爱塔居的博客_CSDN博客-JavaSE领域博主

专栏:数据结构

作者简介:大三学生,希望跟大家一起进步!🌹

博客简介:了解数据结构,学习一些关于数据结构的前置知识

文章目录

目录

文章目录

一、什么是数据结构

二、集合框架

三、什么是算法

3.1算法效率

3.2 大O渐进表示法

四、时间复杂度与空间复杂度的计算

4.1 时间复杂度

 4.2 空间复杂度


一、什么是数据结构

        数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。数据结构由数据和结构组成,结构就是用来描述或者组织数据的。因为我们描述和组织数据的方式不一样,所以有多种数据结构,来应付不同的场景来使用。

数据结构是一门单独的学科,它跟语言是没有关系的。数据结构的实现知识用的工具(编程语言)不一样,不存在什么C++的数据结构,Java的数据结构。

数据库(服务器MySQL)也是一门单独的学科,跟数据结构不一样。数据库是用来存数据的,数据库底层会用到数据结构来描述存储的数据。

数据库服务器->数据库s->表s->数据

二、集合框架

Java集合框架java Collection Framework,又被称为容器container,是定义在java.util包下的一组interfaces和其实现类classes。其主要表现为将多个元素element置于一个单元中,用于对这种元素进行快速便捷的存储、检索、管理。

Java当中的集合类,其实就是被封装好的数据结构。集合类所在的包在java.util这个包底下。

黄色代表interface(接口)

蓝色代表abstract class(抽象类)

棕黄色代表class(类)

 接口和接口的关系是extends关系(扩展关系)

类和接口的关系是implemens关系(实现关系)

1.Collection:是一个接口,包含了大部分容器常用的一些方法

2.List:是一个接口,规范了ArrayList和LinkedList中要实现的方法

        ArrayList:实现了List接口,底层为动态类型顺序表

        LinkedList:实现了List接口,底层为双向链表

3.Stack:底层是栈,栈式一种特殊的顺序表

4.Queue:底层式队列,队列是一种特殊的顺序表

5.Deque:是一个接口

6.Set:集合,是一个接口,里面放置的是K模型

        HashSet:底层为哈希桶,查询的时间复杂度为O(1)

        TreeSet:底层为红黑树,查询的时间复杂度为O(log_2N),关于key有序的

7.Map:映射,里面存储的是K-V模型的键值对

        HashSet:底层为哈希桶,查询的时间复杂度为O(1)

        TreeSet:底层为红黑树,查询的时间复杂度为O(log_2N),关于key有序的

三、什么是算法

🥣算法:就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说,算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

数据结构和算法是相辅相成的。

3.1算法效率

衡量算法效率:

1.时间复杂度(主要衡量算法的运行速度)

2.空间复杂度(主要衡量算法所需的额外空间)

注意:优先考虑时间复杂度。

3.2 大O渐进表示法

实际中,我们计算时间复杂度时,不一定要计算精确的执行次数,只需要大概执行次数,这时候用大O渐进表示法就很合适。

大O符号是用来描述函数渐进行为的数学符号。

推导大O阶方法

1.用常数1取代运行时间中的所有加法常数。

2.在修改后的运行次数函数中,只保留最高阶项。

3.如果最高阶项存在且不是1,则去除与这个项目相乘的常数。

四、时间复杂度与空间复杂度的计算

4.1 时间复杂度

例1:

 例2:

 例3:

 例4:

例5:

 4.2 空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是算程序占用了多少bytes的空间,算的是变量的个数。也是使用大O渐进表示法。

例1:

 例2:

例3:

 

 

 

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

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

相关文章

【论文翻译】Deep Learning for Multi-view Stereo via Plane Sweep: A Survey(2021)

一、论文简述 1. 第一作者:Qingtian Zhu 2. 发表年份:2021 3. 发表期刊:CVPR 4. 关键词:MVS、深度学习、综述 5. 核心思想:读到的第一篇深度MVS的综述,总结的很好,内容涵盖了2021年前的研究…

遗传算法python进阶理解+论文复现(纯干货,附前人总结引路)

遗传算法python进阶理解论文复现(纯干货,附前人总结引路)一、简介和相关概念遗传算法简介相关概念介绍二、与其他智能优化算法的比较蚁群算法粒子群优化算法人工神经网络算法模拟退火算法鱼群算法三、必学知识(站在前人的肩膀上&a…

1214. 波动数列(推公式 + DP)

题目如下: 思路 or 题解: 我们可以设: 第一个数为 xxx d {a, -b} 那后续的数为:xd1x d_1xd1​ , xd1d)2x d_1 d_)2xd1​d)​2 … … xd1d2......dn−1x d_1 d_2 ... ... d_{n - 1}xd1​d2​......dn−1​ 根据题意和上面…

(Java高级教程)第二章Java多线程常见面试题-第三节:线程安全集合类和死锁

文章目录一:线程安全集合类(1)多线程环境下使用ArrayList(2)多线程环境使用队列(3)多线程使用哈希表二:死锁(1)概念(2)死锁产生的四个…

(小程序)会议OA项目-首页

目录 一、FIex布局简介 1.什么是flex布局? 2.flex属性 学习地址: 3.flex弹性布局演示 ① 容器的属性 ⑴ flex-direction属性 ⑵ flex-wrap属性 ⑶ flex-flow ⑷ justify-content属性 ⑸ align-items属性 ⑹ align-content属性 二、轮播图组件m…

微信记录怎么恢复?恢复已删除微信历史记录的4种方式

恢复已删除微信历史记录的4种方式 如何在有/没有备份的情况下在 iPhone 和 Android 上恢复旧的或已删除的微信历史记录,如聊天对话、语音消息、照片、图片和视频剪辑?参考本指南,祝您成功恢复微信数据。 关于微信数据恢复 “说真的&#xf…

容器化技术Docker与任务编排

Docker容器化 Docker简介 传统的Java项目部署需要自己进行打包,redis,nignx等中间件需要安装以及进行很多配置,稍微繁琐,而Docker使用了容器化的技术把这一过程封装为一条指令解决,而这取决于它的架构设计&#xff0c…

数值优化之函数高阶信息

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 函数高阶信息的介绍 2 函数高阶信息的计算 1 函数高阶信息的介绍 hessian矩阵是对称矩阵,最后一个公式是函数关于0的泰勒展开 负梯度是函数下降的最快方向 注意区分Hessian矩阵与Jacobian矩阵,Hess…

9_4、Java基本语法之System、Math、BigInteger与BigDecimal类的使用

一、System类的使用 1、System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的&am…

【算法题解】7. 反转链表

文章目录题目解法一:迭代解题思路代码实现复杂度分析解法二:递归解题思路代码实现复杂度分析题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。来自:leetcode 解法一:迭代 解题思路 使用…

广州车展智能卷王:集度ROBO-01的取与舍

作者 | 德新 编辑 | 王博2022年的最后两天,今年最后一个A级车展在广州开幕。由于种种原因,不少车企匆忙备战或者干脆缺席,这届展会不如往届热闹。但也有憋了大招的选手,比如集度。 12月30日上午,集度在一场非常短的发布…

11-内部类and 12-集合初步

文章目录11-内部类链接外部类使用.this 和.new匿名内部类12-集合初步思考1&#xff0c;List<Apple> apples new ArrayList<>();思考2&#xff0c;如何初始化一个collection思考3&#xff0c;Pet关键字思考4&#xff0c;关于ListIterator这个双向迭代器思考5&#…

保护性暂停设计模式

目录 保护性暂停设计模式 获取结果 产生结果 总代码实现 测试 增加超时效果的Guarded suspension get(long timeout) 测试 保护性暂停设计模式 Guarded Suspension 即 保护性暂停; 是一种等待唤醒机制的一种规范 ,也可以理解为使用中设计模式,Java的API很多都按照保护性…

【免费开放源码】审批类小程序项目实战(活动审批端)

第一节&#xff1a;什么构成了微信小程序、创建一个自己的小程序 第二节&#xff1a;微信开发者工具使用教程 第三节&#xff1a;深入了解并掌握小程序核心组件 第四节&#xff1a;初始化云函数和数据库 第五节&#xff1a;云数据库的增删改查 第六节&#xff1a;项目大纲以及制…

系分 - 面向对象的方法【概念】

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 系分 - &#xff08;概念&#xff09;面向对象的方法 面向对象的方法&#xff08;OO&#xff0c;Object-Oriented&#xff09;是一种基于对象模型的程序设计方法&#xff0c;包括面向对象的分析&#xff08;OOA&a…

【iOS】内存管理

文章目录前言理解引用计数引用计数原理属性存取方法中的内存管理自动释放池保留环以ARC简化引用计数使用ARC时必须遵守的命名规则变量的内存管理语义ARC如何清理实例变量覆写内存管理的方法在dealloc方法中只释放应用并解除监听前言 内存管理&#xff1a; 在Objective-C这样的…

Windows平台下的内存泄漏检测

Windows平台下的内存泄漏检测一、使用_CrtDumpMemoryLeaks定位内存泄露添加对应的头文件转储内存泄漏信息程序任意点退出指定调试信息输出二、定位具体内存泄露位置内存快照转储内存快照比较内存快照完整例子三、使用WinDbg定位获取堆信息查看指定堆的使用情况获取地址信息获取…

【Docker】初级篇

【Docker】初级篇&#xff08;一&#xff09;Docker简介【1】docker是什么【2】容器与虚拟机比较【3】能干嘛【4】去哪下&#xff08;二&#xff09;Docker安装【1】前提说明【2】Docker的基本组成【3】安装步骤&#xff08;1&#xff09;确定是CentOS7及以上版本&#xff08;2…

抽烟打电话行为识别系统 yolo

抽烟打电话行为识别系统通过yolo深度学习框架模型&#xff0c;对现场画面区域进行7*24小时实时监测&#xff0c;发现抽烟打电话等违规行为立即抓拍存档预警。YOLOv5是一种单阶段目标检测算法&#xff0c;该算法在YOLOv4的基础上添加了一些新的改进思路&#xff0c;使其速度与精…

【 shell 编程 】第4篇 数组和函数

数组和函数 文章目录数组和函数一、数组1.普通数组2.关联数组3.数组和循环二、函数1.定义函数2.调用函数一、数组 变量&#xff1a;用一个固定的字符串&#xff0c;代替一个不固定字符串。 数组&#xff1a;用一个固定的字符串&#xff0c;代替多个不固定字符串。 1.普通数组…