算法
简cere
这个作者很懒,什么都没留下…
展开
-
JavaScript算法---搜索(内插搜索)
内插搜索(插值查找)是改良版的二分搜索。二分搜索总是基于中间位置上的值为参照物,而内插搜索会选择接近查找的值作为参照物。条件:要求算法已经排序原理:比如已知:一个数组[1,2,3,4,5,6,7,8,9],查询7的位置。如果是二分法会选择中间一个值作为参数。而内插搜索,会选择一个接近该值的数作为参数。二分法参数值:演变一下:由此可以看到我门是从一半取值,如果我们是查询图书馆中名字序号从A-Z,我们不能取M,而是取偏向于字典前面一些开始,缩小范围。步骤如下:选择期望比例 delta =原创 2021-11-01 17:30:02 · 459 阅读 · 1 评论 -
JavaScript算法---排序(计数排序)【6】
该算法于1954年由 Harold H. Seward提出,通过计数将时间复杂度降到了O(N+k)。计数排序分布式排序原理:需要创建一个临时数组,存放出现的次数。等所有元素都计数完成后,迭代临时数组构建排序后的结果。function countingSort(array) { if (array.length < 2) { // 如果待排序数组为空或只有一个元素,则不需运行排序 return array; } const maxValue = Math.m.原创 2021-09-18 15:00:28 · 91 阅读 · 0 评论 -
JavaScript算法---排序(冒泡排序)【1】
冒泡排序:比较任何两个相邻的项,如果第一个比第二个大则交换位置。原理如下图:比较相邻,就好像气泡上升到表面,因此而得名“冒泡”。代码: //冒泡排序 var BubbleSort =function(array) { var length = array.length; for (var i = 0; i < length -1; i...原创 2019-03-31 17:08:34 · 260 阅读 · 1 评论 -
JavaScript算法---排序(插入排序)【3】
选择排序是每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。原理如下图:假定第一项已经排序,循环第一次第二项与第一项比较,判断第二项应该待在原来位置还是插入到第一项之前。循环第二次,判断第三项应该插入到第一或第二还是第三项的位置,以此类推。(简单来说就是经常玩的扑克,摸牌然后把摸到的牌插入已经存在牌里面某个位置)代码://插入排序...原创 2019-04-10 22:25:02 · 163 阅读 · 0 评论 -
JavaScript算法---排序(选择排序)【2】
选择排序是一种原地址比较排序的算法。原理如下图:找到数据结构中最小值然后将其放置在第一位,然后找到第二小的值放到第二位,以此类推。代码://快速排序 var selectionSort = function(array) { debugger; var length = array.length,indexMin; for(...原创 2019-04-09 21:54:14 · 148 阅读 · 0 评论 -
JavaScript算法---排序(归并排序)【4】
归并排序是是稳定的排序。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。原理图如下:将原始数组分割直至只有一个元素的子数组,接着将小数组归并成大数组。代码:/**将一个大数组转化为多个小数组直到只有一个项*/ var mergeSortRec = function(array) { var length = array.length;...原创 2019-04-20 11:59:13 · 149 阅读 · 0 评论 -
JavaScript算法---排序(快速排序)【5】
快速排序相对于同复杂度的排序中是性能最好的。,它也是使用分治的方法,将原数组分为较小的数组。原理图及其参看【温馨提示】:在现在中轴元素的时候,不建议采用第一个。因为对于几乎已经排序的数组,将导致算法最差的表现吧。可以尝试选择随机一个数组项或者选择中间项。(代码为选择中间项)代码:// 开始入口var quickSort = function(array) { q...原创 2019-06-22 16:33:51 · 169 阅读 · 0 评论 -
JavaScript算法---搜索(顺序搜索和二分搜索)
顺序算法是平常最常见最基本的搜素算法。它就将我们要找的目标元素与一堆数据中一个个比较寻找。也是最低效的一种搜素算法直接上代码// 顺序搜索function sequentialSearch(item,array) { for ( let i = 0; i < array.length; i++) { if (item === array[i]) { ...原创 2019-07-31 15:28:55 · 477 阅读 · 0 评论