数据结构和算法
cocosgirl
终身学习,终身成长
展开
-
线性表之----栈和队列
后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。(就像放盘子,从下往上放,从上往下取,如图)栈主要包含两个操作,入栈和出栈,也就是在栈顶插入一个数据和从栈顶删除一个数据。实际上,栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。不管是顺序栈还是链式栈,我们存储数据只需要一个大小为 n 的数组就够了。在入栈和出栈过程中,只需要一两个临时变量存储空间,所原创 2020-12-15 13:32:31 · 340 阅读 · 0 评论 -
线性表之----链表和缓存
缓存是一种提高数据读取性能的技术在硬件设计、软件开发中都有着非常广泛的应用。比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略 FIFO(First In,FirstOut)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(LeastRecently Used)。相比数组,链表是一种稍微复杂一点的数据结构。原创 2020-12-10 20:08:53 · 646 阅读 · 0 评论 -
线性表之----数组的时间复杂度分析
数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。解释一下线性表: 线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。 非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。第二个是连续的内存空间和相同类型的数据。正是因为这两个限制,它才有了一个堪称“杀手锏”的特...原创 2020-12-10 10:17:22 · 894 阅读 · 0 评论 -
代码复杂度分析
复杂度分析:1. 时间复杂度分析: 代码执行时间随数据规模增长的变化趋势, 也叫作渐进时间复杂度,简称时间复杂度。T(n) = O(f(n)) (1) 我们在分析一个算法、一段代码的时间复杂度的时候,也只关注循环执行次数最多的那一段代码就可以了。这段核心代码执行次数的 n 的量级,就是整段要分析代码的时间复杂度。 (2) 加法法则:总复杂度等于量级最大的那段代码的复杂度. (3)乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积. 时间复杂度的大...原创 2020-12-02 13:48:02 · 3131 阅读 · 1 评论 -
数据结构与算法之美--常用数据结构及算法
先介绍下数据结构和算法的概念:数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组方法”。数据结构是为算法服务的,算法是要作用再特定的数据结构上的。下面导图里有20 个最常用的、最基础数据结构与算法,不管是应付面试还是工作需要,只要集中精力逐一攻克这 20 个知识点就足够了。这里面有 :10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树;10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字..原创 2020-11-30 18:34:38 · 398 阅读 · 1 评论