
算法
胡聊前端
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Failed to mount component: template or render function not defined
在vue中,每一个组件都是一个实例。如果我们想渲染一个组件,则必须为组件提供html。方式有三:template的形式,这是最常用的方式。提供el属性进行挂载,那么el内部(包含el本身)将作为模板。手写render函数其实最终的目的都是为了生成vnode,并最终放入到页面中。否则折腾半天,图个啥…所以这个报错的意思是,你可能没有提供上述的任何一种方式,却想要渲染页面…引起这个问题还有一种可能是vue-router中,你配置了路由需要加载的组件,但在组件中什么也没有。或者你导出组件的inde原创 2021-01-29 10:02:04 · 1122 阅读 · 0 评论 -
使用Promise.all实现限制并发请求函数
所谓并发请求,即有待请求接口100个,限制每次只能发出10个。即同一时刻最多有10个正在发送的请求。每当10个之中有一个请求完成,则从待请求的接口中再取出一个发出。保证当前并发度仍旧为10。直至最终请求完成。简单思路如下:(假设并发请求函数名字为limitedRequest)设定一个数组(命名为:pool),用于后续Promise.all的使用当limitedRequest被调用的时候,首先一次性发出10个请求,并放入到pool中每当一个请求完成后,在回调函数中继续触发下一个请求,而这个触发的原创 2021-01-23 09:54:51 · 5288 阅读 · 1 评论 -
【白话排序算法】希尔/谢尔排序法
谢尔排序法(Shell’s Sort)又称缩小增量排序法。他在1959年由谢尔(D.L.Shell)提出的。当时主流的排序算法时间复杂度都是O(n2)O(n^2)O(n2)。谢尔排序是有望突破这个复杂度的一批算法之一。题外话,对比现在如此多O(nlogn)时间复杂度的排序算法,可见当时人们对排序算法的认知匮乏。你如果能穿越回60年前,绝对是一个了不起的人…谢尔排序理解起来还是有些困难的。不过我可以试图解释下面这样一个思想,你应该能感觉到谢尔排序是可以降低时间复杂度的。在冒泡排序中,核心是相邻两个元素交替原创 2020-11-28 12:03:45 · 1522 阅读 · 0 评论 -
【白话排序算法】冒泡排序法
冒泡排序是一种非常容易理解的排序方式。比如以下的待排序数组:var seq = [9, 2, 6, 4, 3, 1, 7, 5, 6];通过对数组进行遍历,每一趟遍历都依次从左至右两个两个的元素进行比较,若二者次序不正确,就交替二者的位置,描述起来略显枯燥,请看以下图例:上图由左至右,为一趟排序,观察9这个数字其实已经排序到最终的位置。而且整个过程是不是像9这个数字从底部上升到顶部?其实次大的7也会在第二趟排序中从他现有的位置上升到顶部第二的位置。整体就像一个个气泡从水底逐渐冒泡到顶部的过程,故名原创 2020-11-27 21:53:52 · 263 阅读 · 0 评论 -
【白话排序算法】选择排序法
选择排序思路非常简单。我举个简单的例子。比如大家上学拍毕业照,同学们需要由高到低依次站好。这时候老师会从同学们中选择最高的站在某一边,然后选择次高的再次站在他的旁边,最后以此类推。所以选择排序的核心思想是每一趟排序都是选择一个最大/最小的值。选择排序也因此得名。图片来自于网络,纯属打酱油,与本文内容完全不符…下面我来通过图示来直观的展示整个过程。如上图所示。由于选择排序会发生跨元素之间的交换,所以他是一种不稳定的排序方法。下面我将使用JavaScript来实现一下选择排序function s原创 2020-11-23 13:44:19 · 159 阅读 · 0 评论 -
【白话排序算法】折半插入排序法
之前的文章介绍了简单插入排序法。我们知道插入排序的核心操作是在子序列中找到要插入的位置并插入。其实子序列本身是有序的,所以在有序的子序列中,我们完全可以使用折半查找,而不是粗暴的遍历,进而达到降低时间复杂度的目的。首先简单介绍下折半查找。折半查找的用途非常广泛,可以高效的解决很多实际问题。而且时间复杂度仅有O(log2n)O(\log_2n)O(log2n)。既然已经明白了原理,下面我就直接贴代码了,使用JS来实现,过程可以参考代码中的注释function binIntertSort(seq)原创 2020-11-22 11:13:22 · 490 阅读 · 0 评论 -
【白话排序算法】简单插入排序法
直接插入排序也就是简单插入排序,顾名思义,其思路简单:假设我有以下序列[9,2,6,4,3,1,7,5,6]针对于上述序列,准备一个子序列(为方便理解,此处单独准备一个子序列)var subseq = [];从待排序的序列中,由左至右依次取出元素,每次只取一个。将取出的元素插入到子序列的合适位置,从而保证子序列始终有序。比如,第一次取出9:subseq = [9]第二次取出2,2这个元素需要找到在子序列中合适的位置,进而保证子序列始终有序。subseq = [2, 9]之后以此类推原创 2020-11-20 14:36:52 · 340 阅读 · 0 评论