算法
文章平均质量分 65
Java面试365
为什么每次都是差一点差一点,因为每次做事情都是差不多差不多
展开
-
算法入门之散列表简介
散列表又被称为哈希表,包含一个键key、一个值value它们之间的对应关系是一对一,散列表就提供了键key和值value的对应关系,基本结构如下。键值不会重复所以通过键就可以找到与之对应的值,一般散列表查询的时间复杂度为O(1),那么为什么散列表会这么快呢?原创 2022-10-25 23:37:54 · 414 阅读 · 1 评论 -
算法入门之树简介
像我们熟知的栈、队列、散列表等这些都是一对一存储称为线性结构,但在现实生活中不可避免的会用到一对多的场景,基于这些场景聊聊这些一对多的解决方案,树或者图这些都是非线性存储。树在现实生活中给我们的印象是一条主干多条分支,这些分支上再去延申在其末端长出树叶,如下。在数据结构中同样有类似定义,那么如何定义数据结构中的树呢?原创 2022-10-01 20:23:32 · 674 阅读 · 0 评论 -
算法入门之队列
队列和栈及其类似,队列在现实生活中的例子就是隧道,单通道一条线,先进去的先出来,后进去的后出来。在算法中的队列也是这样队列中从队头位置出队,从队尾入队,队列中的元素永远是先入先出FIFO(简称First In First Out)。队列的实现方式同样有两种数组和链表,实现队列的结构图如下(上面是数组实现,下面是链表实现)原创 2022-09-21 11:48:44 · 457 阅读 · 0 评论 -
算法入门之栈
栈是一种线性结构,最常见的生活中的例子就是羽毛球筒羽毛球筒只开放一端入口,那么先放入的球一定是在底部,最后放入的球在最顶部,拿球时先获取的就是靠近顶部的球,只有不停的获取才能将底部的球拿到。栈也就是这样,只能从一端入栈和出栈,这种顺序我们称为FILO(First In Last Out)先进后出,最早进入的元素称为栈底,最后进入的元素我们称为栈顶,如下栈是链表和数组的基本数据的衍生结构,所以可以采用链表或者数据实现,具体思路如下。原创 2022-09-21 11:18:52 · 269 阅读 · 0 评论 -
算法入门之链表简介
链表为数据结构中第二种基本结构,一般链表就是指在物理结构上非连续,非有序的数据结构,链表又分为单向链表和双向链表,单向链表一般可以如下定义结构图如下因为单向链表搜索顺序只能由左到右,显然对检索效率有一定影响,这时候就要推出双向链表,顾名思义就是在单项链表的基础上新增一个prev前指针既可以向前搜索也可以向后搜索,定义如下结构图如下。原创 2022-09-19 10:49:50 · 149 阅读 · 0 评论 -
算法入门之数组简介
数组是算法中最简单、最常用的线性结构,那么数组的定义是什么呢?首先是一片连续的空间,用来存放的数据集合,这就称为数组。原创 2022-09-19 10:47:31 · 154 阅读 · 0 评论 -
空间复杂度
空间复杂度是对程序执行过程中临时占用空间大小度量的指标,一般空间复杂度表示为S(n) = O(f(n)),其中n表示输入规模,fn表示一段程序代码。空间复杂度和时间复杂度的有类似的情形如下。原创 2022-09-16 22:00:32 · 455 阅读 · 0 评论 -
时间复杂度
我们在程序开发过程中为了衡量一个算法的好坏制定了两个标准和,因为程序运行的时间长短和占用内存的大小直接影响到程序的执行效率。但我们需要注意程序运行的时间长短不仅仅取决于代码,还有运行环境、硬件、数据量等因素影响,什么意思呢?:当一段相同的代码同时在2C4G和4C8G上的机器运行因为机器计算力不一样,所以程序运行时间大概率不同(特别是代码计算量大时)。:当一台机器上大部分资源被其它服务所占用,另外一台机器上面没有其它服务,那么一段相同的代码在两个硬件相同机器上执行时间长短会不一样。原创 2022-09-16 21:43:41 · 551 阅读 · 0 评论