随笔分类 -  算法与数据结构

算法与数据结构很重要
摘要:1.什么是大O表示法: 1.在算法描述中,我们用这种方式来描述计算机算法的效率。 2.在计算机中,这种粗略的量度叫做 “大O” 表示法。 阅读全文
posted @ 2020-04-13 11:44 jacksonni 阅读(1596) 评论(0) 推荐(0)
摘要:1.二叉送搜索树的缺点: 2.红黑树难度: 3.红黑树五大规则: 4.红黑树五大规则的作用: 5.红黑树二大变换: 1)变色 2)旋转 6.红黑树的插入五种变换情况: 先声明 插入的数据都是红色!! 1) 插入的位置是 根节点 直接插入根节点位置,并且把 颜色变为黑色。 2) 插入的位置 父节点 为 阅读全文
posted @ 2020-04-09 17:46 jacksonni 阅读(219) 评论(0) 推荐(0)
摘要:1.先序遍历 2.中序遍历 3.后序遍历 4.递归调用栈详解: 详细见: https://zhuanlan.zhihu.com/p/24291978 5.删除节点操作分析: 5.代码封装 //封装二叉搜索树 function BinarySearchTree() { //封装节点内部类 functi 阅读全文
posted @ 2020-04-08 12:22 jacksonni 阅读(195) 评论(0) 推荐(0)
摘要:非尾递归,下一个函数结束以后此函数还有后续,所以必须保存本身的环境以供处理返回值。 尾递归,进入下一个函数不再需要上一个函数的环境了,得出结果以后直接返回。 递归(迭代): recsum(5) 5 + recsum(4) 5 + (4 + recsum(3)) 5 + (4 + (3 + recsu 阅读全文
posted @ 2020-04-07 21:45 jacksonni 阅读(910) 评论(0) 推荐(0)
摘要:递归的三大要素 第一要素:明确你这个函数想要干什么 对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么样的一件事,而这个,是完全由你自己来定义的。也就是说,我们先不管函数里面的代码什么,而是要先明白,你这个函数是要用来干什么。 例如,我定义了一个函数 // 算 n 的阶乘(假设n 阅读全文
posted @ 2020-04-07 21:08 jacksonni 阅读(349) 评论(0) 推荐(0)
摘要:1.树结构: 我们不能说树结构比其他结构都要好,因为每种数据结构都有自己特定的应用场景。 但是树确实也综合了上面的数据结构的优点(当然有点不足于盖过其他的数据结构,比如效率一般情况下没有哈希表高) 并且也弥补了上面数据结构的缺点。 2.而且为了模拟某些场景,我们使用的树结构或更加方便。 因为树结构的 阅读全文
posted @ 2020-04-06 11:08 jacksonni 阅读(173) 评论(0) 推荐(0)
摘要:1.哈希表的完善 1.容量质数(limit):需要恒为质数,来确保元素的均匀分布。 1)普通算法: 判断一个数是否为质数 function isPrime(num) { for (var i = 2; i < num; i++) { if (num % i == 0) { return false 阅读全文
posted @ 2020-04-05 12:10 jacksonni 阅读(160) 评论(0) 推荐(0)
摘要:一. 优秀的哈希函数 1.快速的计算: 需要快速的计算来获得对应的hashCode(霍纳法则来减少乘除次数) 2.均匀的分布: 尽可能将元素映射到不同的位置,让元素在哈希表中均匀分布 二.哈希表的扩容 三.哈希函数的实现 // 封装哈希表 function HashMap() { //属性 this 阅读全文
posted @ 2020-04-05 11:39 jacksonni 阅读(145) 评论(0) 推荐(0)
摘要:(js描述的)数据结构[哈希表1.1](8) 一.数组的缺点 1.数组进行插入操作时,效率比较低。 2.数组基于索引去查找的操作效率非常高,基于内容去查找效率很低。 3.数组进行删除操作,效率也不高。 二.哈希表 1.几乎所有的编程语言都有直接或间接的应用这种数据结构 2.哈希表是基于 数组 实现的 阅读全文
posted @ 2020-04-04 13:31 jacksonni 阅读(142) 评论(0) 推荐(0)
摘要:(js描述的)数据结构[字典](7) 一.字典的特点 1.字典的主要特点是一一对应关系。 2.使用字典,剋通过key取出对应的value值。 3.字典中的key是不允许重复的,而value值是可以重复,并且字典中的key是无序的。 字典和映射关系; 字典和数组; 字典和对象; 二.代码实现字典 fu 阅读全文
posted @ 2020-04-04 09:13 jacksonni 阅读(183) 评论(0) 推荐(0)
摘要:(js描述的)数据结构[集合结构](6) 一.集合结构特点 1.集合中的元素不能重复。 2.集合是无序的。 二.集合的代码实现 function Set() { this.items = {} //1. add方法 Set.prototype.add = function(value) { //判断 阅读全文
posted @ 2020-04-03 11:56 jacksonni 阅读(197) 评论(0) 推荐(0)
摘要:(js描述的)数据结构[双向链表](5) 一.单向链表的缺点 1.只能按顺序查找,即从上一个到下一个,不能反过来。 二.双向链表的优点 1.可以双向查找 三.双向链表的缺点 1.结构较单向链表复杂。 2.占用内存比单项链表多。 四.双向链表的结构 五.双向链表的代码实现 function Doubl 阅读全文
posted @ 2020-04-02 21:05 jacksonni 阅读(180) 评论(0) 推荐(0)
摘要:(js描述的)数据结构 [链表](4) 一.基本结构 二.想比于数组,链表的一些优点 1.内存空间不是必须连续的,可以充分利用计算机的内存,事项灵活的内存动态管理。 2.链表不必再创建时就确定大小,并且大小可无限的延申下去 3.链表再插入和删除数据时,比数组的效率高很多 三.相比于数组,链表的一些缺 阅读全文
posted @ 2020-04-02 12:16 jacksonni 阅读(194) 评论(0) 推荐(0)
摘要:(js描述的)数据结构[队列结构](3) 一.队列结构的特点: 1.基于数组来实现,的一种受限的线性结构。 2.只允许在表头进行删除操作,在表尾进行插入操作。 3.先进先出(FIFO) 二.队列的一些应用: 1.按一定顺序打印文档,执行输出后的结果。 2.多线程的实际执行顺序,就如队列结构相似。 三 阅读全文
posted @ 2020-03-31 15:03 jacksonni 阅读(181) 评论(0) 推荐(0)
摘要:(js描述的)数据结构[栈结构](2) 一.什么是栈结构 1.一种受限制的线性结构,这种结构可以基于数组来实现。 2.可以抽象成一个容器,上面的是栈顶,底下的是栈底。所以仅允许对栈顶进行操作, 二.栈结构的应用 1.函数式调用栈:基于栈的形式来进行函数的整体调用。 2.递归:栈溢出就是其中的一点。 阅读全文
posted @ 2020-03-30 22:02 jacksonni 阅读(171) 评论(0) 推荐(0)
摘要:(js描述的)数据结构 [数组的一些补充](1) 1. js的数组: 1.优点:高度封装,对于数组的操作就是调用API 2.普通语言的数组: 1.优点:根据index来查询,修改数据效率很高 2.缺点: *普通的数组不支持存放不同的数据类型,所以在对普通数组进行封装的时候一般用对象(例如: java 阅读全文
posted @ 2020-03-28 22:37 jacksonni 阅读(130) 评论(0) 推荐(0)