![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS算法
文章平均质量分 66
banggan
这个作者很懒,什么都没留下…
展开
-
JS算法之背包问题
背包问题是一个组合优化的问题,描述如下:给一个固定大小,能够携重W的背包以及一组有价值重量的物品,找出一个最佳的方案,使得装入包中的物品重量不超过W且总价值最大。1、问题分析数据:物品个数n=5,物品重量weights=[2,2,6,5,4],物品价值values=[6,3,5,4,6],背包总容量W=10。我们设置一个矩阵f来记录结果:f(i.j)可表示可选的物品为{i.....n}...原创 2018-07-17 21:03:12 · 6899 阅读 · 1 评论 -
JS实现冒泡排序
1,算法简介冒泡排序是一种简单的排序算法,它的工作原理是重复走访要排列的元素,一次比较两个元素,若两个元素有错误,则将它们交换,直到没有元素再交换,排序结束。2,算法描述1)比较相邻元素,如果第一个比第二个大,就交换2)对每一对相邻元素作相同的工作,从第一对到最后一对,最后那个元素会是最大元素3)针对所有元素执行上面的操作,除了最后一个除外4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一...原创 2018-07-12 15:31:44 · 194 阅读 · 0 评论 -
JS实现插入排序
一,插入排序1,算法简介插入排序的工作原理就是将未排序数据,对已排序数据序列从后向前扫描,找到对应的位置并插入。插入排序通常采用占位的形式,空间复杂度为O(1),因此,在从后向前扫描的过程中,需要反复的把已排序的元素逐步向后挪位,为新插入元素提供插入的位置。2,算法描述1)从第一个元素开始,该元素可以被认为已经被排序2)取出下一个元素,在已经排好序的序列中从后往前扫描3)直到找到小于或者等于该元素...原创 2018-07-10 15:29:02 · 13066 阅读 · 0 评论 -
JS实现堆排序
一,堆的概念堆是一棵顺序存储的二叉树其中每个节点的关键字都不大于其子节点的关键字,这样的堆称为小根堆其中每个节点的关键字都不小于其自己点的关键字,这样的堆称为大根堆下面是一个典型的小根堆:二,堆的调整堆的调整是为了保持堆的特性而做的一个操作,对以某一个节点为根的子树做堆调整,其实就是将该根节点进行”下沉操作”(具体是通过和子节点的交换完成的),一直下沉到合适位置,使得刚才的子树满足堆的性质为止。对...原创 2018-07-10 15:03:15 · 3610 阅读 · 2 评论 -
JS实现快速排序
1.算法思想 通过一次排序将要排序的数组分割成两个独立的部分,其中一部分的所有数据小于另外一部分的所有数据,然后按照此方法对两个部分的数据进行快速排序,整个过程采用递归实现,以此达到整个数组变为有序数组。时间复杂度:平均-O(nlogn),最好-O(nlogn),最坏-O(n^2);空间复杂度:O(longn).2.算法思路1.从序列中选取一个基准值;2.遍历整个序列,比基准值小的数放在左边,...原创 2018-07-10 13:00:16 · 301 阅读 · 0 评论 -
JS实现选择排序
1,算法简介选择排序是一个简单直观的排序方法,它的工作原理很简单,首先从未排序序列中找到最大的元素,放到已排序序列的末尾,重复上述步骤,直到所有元素排序完毕。2,算法描述1)假设未排序序列的第一个是最大值,记下该元素的位置,从前往后比较2)若某个元素比该元素大,覆盖之前的位置3)重复第二个步骤,直到找到未排序的末尾4)将未排序元素的第一个元素和最大元素交换位置5)重复前面几个步骤,直到所有元素都已...原创 2018-07-12 15:45:16 · 11604 阅读 · 0 评论