2021年6月22日
摘要: 在这里总结一下二叉搜索树常用的方法。 准备工作:仿照链表的实现,在二叉搜索树类中也需要一个内部节点类。该节点类包含三个属性:存储节点值的key、指向左子树的left、指向右子树的right。此外,在二叉搜索树中添加一个root属性,指向根节点。 function Node(key) { this.k 阅读全文
posted @ 2021-06-22 19:32 springxxxx 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 本文总结一下链表常用方法的实现。 准备工作:由于链表由一个个节点组成,且节点在内存中的存储不连续,所以我们需要封装一个内部的Node类,包含两个属性:节点值data和下一个节点的引用地址next。此外在链表类中还需要两个属性:head用来指向第一个节点,length表示当前链表的长度。 // 内部的 阅读全文
posted @ 2021-06-22 19:26 springxxxx 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 快速排序 快速排序的思路是,先选择任意元素为轴,将比轴小的元素都放在其左边,比轴大的元素都放在其右边,这样轴的位置一定是正确的。之后通过递归,对轴左右两边的元素都进行快速排序。最终实现整个数组有序。 那么第一个问题来了,怎么选择轴呢?这里b站的coderwhy老师给出一种方案:让数组首尾中三处元素当 阅读全文
posted @ 2021-06-22 16:41 springxxxx 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 希尔排序 我们还记得,插入排序的思路是: 1、外循环依次拿出第二个到最后一个元素,记作temp。 for (let i = 1; i < length; i++) { let temp = this.array[i] 2、将temp与它前面的元素依次进行比较。定义一个指针j指向前面的元素 let j 阅读全文
posted @ 2021-06-22 12:47 springxxxx 阅读(40) 评论(0) 推荐(0) 编辑