数据结构--准备知识

一.算法效率

算法效率分为两种:第一种为时间效率 ,第二种为空间效率 。时间效率称为时间复杂度 ,空间效率称为空间复杂度 。时间复杂主要衡量一个算法的运行速度 ,空间复杂度主要衡量一个算法所需的 额外的空间( 现在不需要特别关注,现在的磁盘空间特别大**)**。

二.时间复杂度

1.概念:

算法中基本操作的执行次数,为算法的复杂度

2.大O的渐进表示法

算法复杂度存在最好、平均、最坏情况:

**最坏情况:**任意输入规模的最大运行次数(上界)

**平均情况:**任意输入规模的期望运行次数

**最好情况:**任意输入规模的最小运行次数(下界)

例如: 在一个长度为N数组中搜索一个数据x

最好情况:1次找到

最坏情况:N次找到

平均情况:N/2次找到

在实际情况中,我们并不需要精确的执行次数,一般关注最坏情况,用大O的渐进表示法表示

大O的渐进表示法规则:

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

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

3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

举例:

三.空间复杂度

空间复杂度是算法在运行过程中临时占用存储空间大小(即新增变量的个数) 。也使用大O的渐进表示法

举例:

四.包装类(Java最开始讲过)

再Java中,由于基本类型不是继承于Object类,为了在泛型代码中支持基本类型,所以个每个基本类型都对应一个基本类型

1.装箱和拆箱

**装箱:**将基本类型变为包装类型的过程,分为自动装箱和显示装箱

**拆箱:**将包装类型变为基本类型的过程,分为自动拆箱和显示拆箱

举例:

注意:

五.泛型

**概念:**从代码上讲就是对类型实现了参数化

主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。

语法:

利用Object举例:

利用泛型举例:

六.泛型的上界

语法·:

举例:

接口也是如此:

七.泛型方法

语法:

举例:

八.擦除机制

概念:在编译的过程中,将所有的泛型类型T 替换成他的上界类型(默认为Object)

相关推荐
~木雨9 分钟前
Java 并发编程架构全景:并发层的五域设计 —— 线程模型、线程池隔离、并发安全到问题治理(全体系汇总)
java·安全·架构·线程池·并发编程·高并发架构
xiancai_xianyu22 分钟前
想把数据模型一次建完美再上AI?会一直卡在建模里
开发语言·人工智能·php·数据模型·语义层·本体建模·企业知识网络
极小狐26 分钟前
从复制粘贴到可复用组件:极狐GitLab CI/CD 组件目录实战
java·ci/cd·gitlab·devops·组件化
麻瓜code31 分钟前
【Agent】Spring AI RAG 实战:本地向量库 + 云端知识库
java·人工智能·spring
(Charon)37 分钟前
【C++】网络缓冲区设计(二):Ring Buffer环形缓冲区、head/tail与跨界读写
开发语言·c++
Java后端的Ai之路1 小时前
LangChain Deep Agents 从入门到企业实战
开发语言·人工智能·python·langchain·deepagents
小刘在重生~1 小时前
Java 集合|Collection、List、ArrayList、LinkedList、泛型、Collections 工具类
java·数据结构·list
会飞的拖把1 小时前
Python文件操作详解:从文件读写到os、shutil模块实战
开发语言·python
RS迷途小书童1 小时前
Python 解析大疆无人机 SRT 字幕日志
开发语言·python·无人机
我不会起名字3221 小时前
一天一道算法题(29):单调栈
java·数据结构·python·算法·leetcode·golang·单调栈