12 2015 档案
摘要:二分查找算法类似我们日常生活中常见的猜数字的游戏。假设给定从1-100这个排好序的数组,而猜数字的人只知道这个范围,你拿着一块写有数字的题板背对着他,让他猜你手里拿的的数字。估计有经验的人会先猜50,然后你说偏大了,偏小了,还是相等。如果偏大了或者是偏小了,他会用同样的方式在偏大或者偏小的数组中从新...
阅读全文
摘要:顺序查找是我们在数据集不大的情况下使用的最简单的情况了。他的原理是从列表的第一个元素开始对列表中的元素逐个比较判断,直到找到想要的结果,或者执行到列表的尾部。在查找的时候有可能会查找到数组的尾部,因为技能很简单,所以使用很暴力。
阅读全文
摘要:快速排序是一种分而治之的算法,通过递归的方式将数据依次分解为包含较小元素和较大元素的不同子序列。该算法不断重复这个步骤知道所有的数据都是有序的。 这个算法首先在数据列表中选择一个元素作为基准值(pivot)。数据的排序围绕基准值进行,将列表中小于基准值的元素一到数组的底部,将大于基准值的元素移动的数
阅读全文
摘要:冒泡排序应该是大家比较熟悉的排序方法之一,但是确是一个效率不是太高的排序算法,特别是面对大数据集的时候。 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,接下来的操作类似,
阅读全文
摘要:归并排序实现原理:把一系列排好序的子序列合并成一个大的完整有序序列。在递归算法中归并排序算是一个比较典型的例子了,下面是使用javascript实现的归并排序算法: 参考:http://www.cnblogs.com/jillzhang/archive/2007/09/16/89493...
阅读全文
摘要:希尔排序是以它的创造者(Donald Shell)命名的,他是在插入排序基础上的一个高级排序。插入排序的原理是在已经排好的序列中,逐个比较相邻元素,然后在现有序列中找到自己应该插入的位置,然后插入就好了。而希尔排序的原理是:先将整个待排元素序列通过一定的间隔(序列中元素的间隔)分割成若干个子序列,对...
阅读全文
摘要:集合(set)是一组无序的,但彼此之间又有一定相关性的数据集。每个成员在数组中只能出现一次。在使用集合(set)之前最好先理解一下内容:1、不包含任何成员的集合称为空集合。2、如果两个集合的成员都相等,两个集合相等。3、如果一个集合中的成员都在另一个集合中,则两个具有父子集的关系。在集合中我们常用的...
阅读全文
摘要:Dictionary常被称为数据字典,是一种用来保存键值对的数据结构,比如我们日常的电话本,就是一个Dictionary。我们通过键(名字),就可以访问到对应的值(电话号码)。在C++与java中我们都是使用map来构建这样一个Dictionary,只是名字不同而已。在javascript中对象就好...
阅读全文
摘要:在使用C++的时候我们经常会使用到各种容器,这些容器其实就是一种数据结构。在java中其实也是如此。但是由于javascript只给我们提供了一种内置的数据结构数组,准备来说是对象。没有我们常见的那些数据结构,但是在实际的工作中我们却不能离开这些常见的数据结构。所以我们只能去自己构造了。虽然java...
阅读全文
摘要:1:延迟执行,类似于Java中线程的sleep const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); 使用方式: async getSomeInfo() { await doSometings(); await de
阅读全文