数据结构和算法
文章平均质量分 79
李孟聊人工智能
独立开源软件开发者,SolidUI作者。老程序员,老扑街作者,依然奋战在开源一线,依然继续写文章。
展开
-
算法复杂度
文章目录一.简介二.大O表示法三.时间复杂度分析3.1 只关注循环执行次数最多的一段代码3.2 加法法则:总复杂度等于量级最大的那段代码的复杂度3.3 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积3.4 常见时间复杂度实例分析3.5 最好、最坏情况时间复杂度3.6 平均情况时间复杂度3.7 均摊时间复杂度四.空间复杂度分析一.简介数据结构和算法本身解决的是如何让代码运行得更快,如何让代码更省存储空间。计算算法占时间和空间把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用内存大小原创 2020-10-24 01:14:49 · 1048 阅读 · 0 评论 -
链表的常见问题
链表指针转动,很容易转晕,介绍其中有几个常见的技巧。一.指针/引用含义指针/引用,实际上都是存储所指对象内存。将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。二.指针丢失和内存泄漏插入节点时,注意操作顺序。删除节点时,注意释放空间。三.哨兵哨兵结点的链表叫做带头链表,这样节省判断head == null四.边界条件如果链表为空时,代码是否能正常工作?如果链表只包含一个结点时,代码是否能原创 2020-07-18 18:28:43 · 1888 阅读 · 0 评论 -
单链表LRU算法
一.简介链表在初始化时仅需要分配一个元素的存储空间,并且插入和删除新的元素也相当便捷,同时链表在内存分配上可以是不连续的内存,也不需要做任何内存复制和重新分配的操作,由此看来顺序表的缺点在链表中都变成了优势,实际上也是如此,当然链表也有缺点,主要是在访问单个元素的时间开销上。二.LRU缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓原创 2020-07-12 05:10:32 · 1488 阅读 · 1 评论 -
位运算的优化与应用
一.简介随着JDK的发展以及JIT的不断优化,语法糖越来越丰富了,程序用了太多了看似高级的用法,易读性提高很多,那么效率呢?很多时候计算可以转换位运算,提高性能和节约空间,很多组件都用到了,比如HashMap、BitSet、ProtocolBuf等等,本文验证一些位运算的用法。二.基础2.1 位运算符Java整型数据类型有:byte、char、short、int、long。一个字节占8位。...原创 2020-04-14 20:01:48 · 1293 阅读 · 0 评论 -
业务实战中用到树结构
一.简介最近业务中个场景,行业分级,用到原创 2020-03-20 20:19:14 · 673 阅读 · 0 评论 -
算法系列01
/** * 冒泡 * 两两比较相邻记录,如果反序则交换,直到没有反序的记录为止 */public class bubble { public static void bubblesort(int[] sort){ int tmp=0; for (int i = 0; i < sort.length-1; i++) { for (int ...原创 2018-06-18 03:29:19 · 873 阅读 · 0 评论 -
算法系列02
/** * 递归:在方法体重调用本身这个方法 **/public class DiGui { public static void main(String[] args) { DiGui.test(0); } public static void test(int value){ if(value<100){ System....原创 2018-06-18 03:47:57 · 790 阅读 · 0 评论 -
算法文档进行中
有一些算法文档,有兴趣的可以收藏看看,如果链接失效了,私聊吧!后续还有一些,就不一一显示了。下载地址:https://pan.baidu.com/s/1uH7vzXHyHT-IH3ii4TMjuw...原创 2018-11-16 14:51:10 · 1339 阅读 · 0 评论 -
算法系列03
最近养病中,文章发布的少些,整理一套经典算法项目,学习一下。项目地址:https://github.com/77954309/classical_algorithm原创 2019-02-10 11:27:25 · 776 阅读 · 0 评论