![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
文章平均质量分 61
swordbob
博观而约取,厚积而薄发
展开
-
堆内存和栈内存区别以及jvm存放数据剖析
1.栈(stack) 在Java中,栈(stack)是由编译器自动分配和释放的一块内存区域,主要用于存放一些基本类型(如int、float等)的变量、指令代码、常量及对象句柄(也就是对象的引用地址)。 栈内存实际上就是满足先进后出的性质的数学或数据结构,栈内存的操作方式类似于数据结构中的栈(仅在表尾进行插入或删除操作的线性表)。 栈的优势在于,它的存取速度比较快,仅次于寄存器,栈中的数据还可以共享,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间。 缺点表现在...原创 2021-11-30 23:56:10 · 927 阅读 · 0 评论 -
已知负数的补码求原码
正数的原码,反码,补码都是一样的。负数的原码你应该知道的,就是带符号位的二进制数。反码,符号位不变为1,其他每位二进制数取反,1变0,0变1.补码就是在反码的基础上,符号位不变,最低位加1,得到补码。这里有个简单的求补码的方法,从原码的最低位向最高位看去,遇到第一个1前,保持不变,第一个1前面的二进制串取反(符号位保持不变)。下面是一个例子。x=10110110这是一个负数,它的原码,反码,补码分别是:10110110,11001001,11001010用上面的那个简单的方法就可以一步写出原创 2021-05-14 00:20:02 · 7399 阅读 · 0 评论 -
二叉树的前序、后序、中序遍历
为什么叫前序、后序、中序?一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树,则二叉树的遍历方式有 6 种:DLR、DRL、LDR、LRD、RDL、RLD。由于先遍历左子树和先遍历右子树在算法设计上没有本质区别,所以,只讨论三种方式:DLR--前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 )LDR--中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面)LRD--后序遍...原创 2021-05-13 01:55:18 · 944 阅读 · 0 评论 -
语法树使用
何为语法树什么是语法树?你是否曾想过,这个世界存在这么多语言的意义。假如现在你面前有一个物体,它是一个不规则的圆体,整个身体通红,头部还有一根细长稍微弯曲偏右呈棕色的圆柱体。在中文我们称之为「苹果」,在英文我们称之为「Apple」,在日文中我们称之为「アップル」,在法语中我们称之为「pomme」,在德语中我们称之为「Apfel」,无论用不同的语言,针对这个物体在文字上、发音上都完全不一样,但这个物体确确实实的存在这个时空上,颜色、气味、形状都不曾因为语言而改变过。无论这个世原创 2021-05-12 01:20:14 · 7366 阅读 · 1 评论 -
经典排序算法 必知必会之插入排序和快速排序
对一个基本有序的数组进行排序,最适宜采用的算法是插入排序算法,时间复杂度是O(n);快速排序适用于无序数组,对于有序数组来说时间复杂度是O(n²),属于最坏的情况1.插入排序插入排序的基本操作是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。基本思想为,将待排序的数据分为两部分,一部分是有序的,另一部分的每个元素将在有序的这一部分找到合适的位置插入即可,如图所示:...原创 2021-05-09 17:33:24 · 2702 阅读 · 0 评论