![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
weixin_42412601
后生仔
展开
-
动态规划
目录例子1:买卖股票的最佳时机例子2:最大子序和例子3:青蛙跳台阶问题例子4:把数字翻译成字符串 https://blog.csdn.net/qq_40963043/article/details/100765212 https://blog.csdn.net/kongmin_123/article/details/82430985 动态规划的基本思想: 保存子问题的结果,避免重复计算 用额外的数据结构保存 空间换时间 大问题可以由子问题推出(状态转移) dp是没有递归,因为用数组存储前置结果,用这些结原创 2020-11-20 22:47:26 · 125 阅读 · 0 评论 -
lru实现
最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: https://www.cnblogs.com/kyoner/p/11179766.html 1、新数据插入到链表头部; 2、每当缓存命中(即缓存数据被访问),则将数据移到链表头部; 3、当链表满的时候,将链表尾部的数据丢弃。 【命中率】 当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。 【复杂度】 实现简单。 【代价】 命中时需要遍历链表,找到命中的数据块索引,然后需要将数据移到原创 2020-10-19 22:10:28 · 138 阅读 · 0 评论 -
数据结构与算法(六)排序算法下篇
目录快速排序快排示意图代码以左边的数为基准归并排序代码实现基数排序(桶排序)基本思想代码推导过程最终代码常用排序算法时间复杂度比对 快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 快排示意图 注意不一定就用最后一个数作为基准,也可以使用中间的数 代码 1千万数据量,耗时1秒,比希尔原创 2020-10-20 18:10:17 · 74 阅读 · 0 评论 -
数据结构与算法(六)排序算法上篇
目录排序算法的介绍冒泡排序选择排序选择排序思想选择排序的思路图解插入排序插入排序法思想插入排序的问题希尔排序希尔排序法基本思想希尔排序法的示意图 排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序是一种算法,不是数据结构。 排序的分类: 内部排序(面试重点考察): 指将需要处理的所有数据都加载到内部存储器中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 常见的排序算法分类(见右图): 冒泡排序原创 2020-08-02 15:31:31 · 64 阅读 · 0 评论 -
栈和队列
栈 栈是一种线性结构;相比数组,栈对应的操作是数组的子集;只能从一端加元素,也只能从一端取出元素;这一段称为栈顶。 先进后出的数据结构: 栈的应用: 无处不在的撤销(ctrl+z) 程序调用的系统栈 计算机执行A方法时,执行到第二行,发现要先去执行方法B,此时系统就要先记录一个信息A2(表示方法A执行到了第二行,就去执行B了);同理,执行B方法的时候,执行到第二行时,发现又要去执行C...原创 2019-12-08 21:03:05 · 80 阅读 · 0 评论 -
数组
数组:把数据码成一排进行存放。 索引从0开始: 数组优点:快速查询。 数组最好应用于“索引有语意"的情况。 数组类: public class Array<E> { private E[] data; /** * size 元素个数+1(注意元素个数不是数组长度) */ private int size; /** * c...原创 2019-12-08 00:17:04 · 83 阅读 · 0 评论