作者:爱塔居的博客_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(),关于key有序的
7.Map:映射,里面存储的是K-V模型的键值对
HashSet:底层为哈希桶,查询的时间复杂度为O(1)
TreeSet:底层为红黑树,查询的时间复杂度为O(),关于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: