java算法学习(java学算法用处大吗)

deer332025-07-14技术文章30

算法

什么是算法

学习算法学习有什么作用

比如

现在我们需要存储一个表中数据

id 1

age 18

name 天天

我们应该如何做

在数据量大的时候我们可以准确查询到数据的方式

我们使用一个表的方式进行存储

使用表存储,机器就会每个字段进行匹配的方式,查询速度很低的方式

我们简化数据结构

我们使用一个目录的方式存储一个key为1

然后把数据存储为value

我们查询key的时候我们就会查询到对应的数据的方式

算法可以帮助我们提高查询速度

算法的效率

我们如何进行评估一个好的算法

重点

时间效率

就是查询速度,越快越好

空间效率

占用空间大小,占用越小越好

经典

俩个算法

循环

就是匹配每个查询值和当前值是否相同




递归

不断的向内面查询的方式,知道遇见相同的值停止


数据结构

数据结构和算法相当密切的关系

我们如何进行数据的存储

在查询的时候快速查询到数据

这个时候需要设计好数据结构

效率比较快的就是哈希表

通过key和value的方式可以快速定义到具体的对象

map在数据量大的时候也可以快速查询到数据信息

因为在map中是红黑树的数据结构组成的方式

红黑树,特点,树低,分支少,查询快

树底减少io次数

分支少减少了比较次数

占用空间少和时间效率高

数组

我们经常使用到的数据结构

但是你知道如何对数组进行优化吗?

我们知道数据底层结构


是一个连续的数组

查询速度,拿到对应的下标索引,我们就可以拿到具体的值

但是删除速度慢

如果删除第二个元素

但三个元素向前移动

导致查询速度变慢

如果第三个不移动会

就会出现,占用内存大

如果是我们设计这个数组数据结构进行如何优化的方式

我们可以参考map的方式进行优化

主要就是优化数组向前移动的问题

我们解决方式

就是等到数组到一定数量的时候,进行一个整体的删除

删除空占用的数组

掌握删除数组的时机比较重要,我们可以选择给数组设置一个初始容量

在数组第二次扩容的时候进行整体删除无用的值

对数组第一次优化的方式

这次优化也会出现一个问题

就是如果你不去删除空的数组就会占用多余的空间

占用空间大效率不高

其实我们现在做法叫做通过空间换时间的方式

索引重新变化