数据结构与算法
JIGE_Vamos
这个作者很懒,什么都没留下…
展开
-
js实现常见排序算法
1. 冒泡排序时间复杂度:O(n) = n2空间复杂度:O(n) = 1稳定性:稳定 function sort(arr) { for (let i = 0; i < arr.length; i++) { let flag = false; for (let j = arr.length - 1; j >= i; j--) { if (arr[j] > arr[j - 1]) {原创 2020-09-18 11:33:26 · 160 阅读 · 0 评论 -
js实现常见动态规划问题
1. 0-1 背包问题给定一个数组 weight 代表物品的重量,w 代表背包的总容量,每个物品只能装一次,求背包最多能装下多少重量的物品。物品的重量是 [2, 2, 4, 6, 3],背包重量是 9,这种情况下最优解是 9 var knapsack = function (weight, w) { let n = weight.length let states = [] // 对第一行进行特殊处理 states.push(new Array(w +原创 2020-09-15 18:16:09 · 315 阅读 · 0 评论 -
js实现二叉树常见算法操作
1. 二叉树的中序遍历leetcode94方法一:递归 var inorderTraversal = function(root) { let result = []; let inorder = function(node){ node.left && inorderTraversal(node.left); result.push(node.val); node.right原创 2020-08-04 18:02:39 · 570 阅读 · 0 评论 -
js实现链表结构以及常见操作
js实现链表结构以及常见操作一、构建Node类通过Node构造函数new的实例表示一个节点,它包含两个属性:element属性用来保存节点上的数据next属性用来保存所指向的节点的地址 // 定义Node类 function Node(element) { this.element = element; this.next = null; }二、构建List类定义header属性作为一个链表的头节点,并定义insert(),find()等实原创 2020-07-19 15:07:07 · 520 阅读 · 0 评论 -
时间复杂度分析的总结
时间复杂度分析的总结为什么需要复杂度分析?刚接触复杂度分析时,我们可能会有些疑惑,直接把写的代码跑一遍,就能得到算法执行的时间和占用的内存大小。为什么还要做时间、空间复杂度分析呢?事实上,这种评估算法执行效率的方法是正确的,我们将其称为事后统计法。但是,这种统计方法有非常大的局限性。1. 测试结果非常依赖测试环境测试环境中硬件的不同会对测试结果有很大的影响。比如,同样一段代码,i9 处理器要比 i3 处理器执行的速度快很多。2. 测试结果受数据规模的影响很大对同一个排序算法,待排序数据的有序度原创 2020-07-15 10:15:42 · 2158 阅读 · 1 评论