数据结构
文章平均质量分 58
崔泡泡—猫
勤能补拙
展开
-
java中栈的算法
定义两个栈num和min,num栈用来实现入栈出栈,min栈的栈顶一直是num栈中所有数的最小值,当有数据入栈时先向num栈存储该数,接着判断min栈是否为空,如果为空的话就直接存入,如果不为空的话将入栈的数与min栈栈顶元素比较,如果入栈的数更小那么min栈入栈,出栈时判断min栈栈顶与num栈栈顶是否相等,相等的话min出栈,然后让num出栈,不相等的话min不出栈,返回最小值时直接返回min栈的栈顶即可。出栈时判断min栈栈顶与num栈栈顶是否相等,相等的话min出栈,然后让num出栈。...原创 2022-08-30 16:29:51 · 277 阅读 · 0 评论 -
java栈和自定义栈
实质:本质上还是个数组,只不过使用了内部方法让其有了栈的特点。peek():查看栈顶对象,但是不从栈内移除。pop():查看栈顶对象,并且从栈内移除。empty():检测栈是否为空。特点:先入后出,后入先出。push():数据压栈。...原创 2022-08-30 16:05:15 · 679 阅读 · 0 评论 -
单线程与多线程使用场景
当mysql进程调用磁盘中存储的表文件时,由于磁盘读取速度限制,会消耗大量的时间在上面(通常单个表文件是几十ms),在等待读取的这段时间,CPU在打空转造成了资源浪费,所以如果是单线程调度时每次都要等待,这时使用多线程就可以在CPU等待磁盘调度时去执行其他线程。每个线程在执行时只执行极短的时间,然后去执行其他线程,每次切换之前要记录本次执行的数据,会额外耗费资源和时间,所以会有消耗时间,而每个线程之间切换的速度越快,消耗的时间就越多。网络爬虫,数据库进行批量操作时。......原创 2022-08-16 22:53:07 · 2921 阅读 · 0 评论 -
红黑树(1)——为什么要有红黑树
对于某个无序数组,如果我们想要查找一个值的话那么时间复杂度是O(n)查找方法:使用一个游标循环遍历寻找如果我们让这个无序数组变成有序数组的话使用折半查找(每次都只需要查找一半的数据)就可以使时间复杂度降到O(logn)折半查找:定义三个游标left,mid,right。mid总是指向left和right中间的数,如果我们查找的数(假设是4)比mid指向的数小的话,将right指向当前mid,同时重新计算mid的指向。......原创 2022-08-16 20:44:38 · 217 阅读 · 0 评论 -
红黑树2——怎么画红黑树
在了解红黑树之前我们需要先了解2-3-4树,因为我们手动构建红黑树的话就需要先构建2-3-4树。原创 2022-08-16 22:37:58 · 274 阅读 · 0 评论 -
java中数学函数的使用
要想使用数学函数首先声明:import java.lang.Math.*;平均数:Math.sqrt(x);次方:Math.pow(x,a);取整:Math.round(x);(取整后的数为long类型)结果为x的a次方精度转换,虚线表示精度缺失高转低会从最右侧截取自增自减:设定:一个值等于自己++,值不变a = ++a没有问题运算符表达式使用:==:相等!=:不等||:或&&....原创 2022-03-08 20:53:36 · 3847 阅读 · 0 评论 -
给定一个链表,但是不知道链表大小,要求遍历一次,找到链表的中间位置
定义fast指针和 slow指针都指向head节点,每次遍历slow指针向后移动一步,fast向后移动两步,当fast指针走到最后(两种情况,一种是刚好走到链表最后一个节点,一种是倒数第二个节点,这两种情况在下面都会说)1.定义fast指针和 slow指针都指向head节点 2.第一次遍历,fast向后移动两个,slow移动一个 3.第二次遍历 4.第三次遍历 5.第四次遍历,此时fast节点已经不能再往后遍历,slow节点就是我们要的答案 可以看出在fast指向3的时候虽然后面还有一个节点,但是由于fa原创 2022-07-02 09:35:46 · 271 阅读 · 0 评论