随笔分类 - 数据结构与算法
摘要:一、 什么是队列 队列是一种先进先出(FIFO,First-in-first-out)的数据结构,其数据智能在队尾插入,在队首删除。 可以将队列想象成在食堂排队的人群,排在最前面的人第一个打饭,后面来的人只能在队尾排队,直到轮到他们为止。 二、队列的操作 1、入队 使用 enqueue() 方法,
阅读全文
摘要:列表是一种最自然的数据组织方式,如果数据存储的顺序不重要,且无需对数据进行查找,那么列表是一种再好不过的数据结构,但对于其它一些应用,列表就显得太过简陋,我们需要一种更复杂的数据结构——栈 一、 什么是栈 栈是一种后入先出(LIFO,Last-in-first-out) 的数据结构,其数据只能在栈顶
阅读全文
摘要:JS 如何创建一个简单的列表类?以下将描述如何实现该抽象数据类型(ADT) 一、 什么是列表 列表是一组有序的数据,每个列表中的数据项称为元素 在 JS 中,列表的元素可以是任意数据类型,且列表保存多少元素没有事先限定 要设计列表的抽象数据类型,我们需要列出列表的属性及方法: 1、列表的属性 属性名
阅读全文
摘要:题目要求: 解法一: 直接用 sort 从大到小排序,取第 k 个 var findKthLargest = function (nums, k) { nums.sort((a, b) => { return b - a }); return nums[k - 1]; }; 解法二(优化性能): 使
阅读全文
摘要:一、什么是 KMP 算法 KMP 算法是一种改进的字符串匹配算法,用于判断一个字符串是否是另一个字符串的子串 二、KMP 算法的时间复杂度 O(m+n) 三、Next 数组 - KMP 算法的核心 KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就
阅读全文
摘要:一、不稳定排序算法有哪些 1、堆排序 2、希尔排序 3、快速排序 4、选择排序 口诀:一堆(堆)希尔(希尔)快(快速)选(选择) 二、常见排序算法稳定性分析 1、堆排序稳定性分析 我们知道堆的结构是节点i的孩子为 2*i 和 2*i+1 节点,大顶堆要求父节点大于等于其 2 个子节点,小顶堆要求父节
阅读全文
摘要:一、什么是页面置换算法 进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。 好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出
阅读全文