
算法
文章平均质量分 89
工程师阿杜
拓荒人
展开
-
算法系列之--Kotlin的算法实战比较(原)
前面几节我们介绍了各种算法的具体实现,这一节我们分别对以上算法进行性能测试。 测试方法如下,分别测试n=1000,10000,100000(十万),500000(五十万),1000000(一百万),3000000(三百万)情况下的运算效率,随机数产生的范围是当前数据量的十倍,比如1000个随机数时,随机范围1000*10=10000. 测试机型为小米6。原创 2017-09-14 16:18:33 · 2035 阅读 · 0 评论 -
算法系列简单研究(原)
算法是一个工程师最基础的素养之一,就好比语言、框架一样,你不会这些知识,可能并不影响你日常工作的解BUG过程,但是如果你不去了解这些"抽象"的知识,那么可能整个职业生涯都只是解解BUG而已。 或者说,算法、框架、语言的研究,决定了一个程序员能到达的层次。 这个系列我们就来聊聊一些"烂大街"了的算法。 《算法系列之--Javascript和Kot原创 2017-09-13 16:46:35 · 494 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的冒泡算法(原)
介绍 冒泡算法基本上是IT从业人员接触到的第一个算法,其原理就是依次对比相邻元素,大的放在后面,当全部list遍历之后,该list的最大值就会被置换到list的最后,详细步骤如下: 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的原创 2017-09-13 16:54:14 · 592 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的选择算法(原)
上一节我们学习了冒泡算法,这一节来学习选择算法 介绍 选择排序与冒泡类似,都是入门级的排序算法,效率也与冒泡相同,都是O(n^2),算法步骤如下: 1. 寻找当前序列中最小的数的索引 2. 找到最小值索引后与第一位元素交换位置 3. 再在剩余序列中查找最小数的索引 4. 找到后与第二位元素交原创 2017-09-13 17:00:48 · 430 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的插入算法(原)
上一节我们学习了选择算法,这一节来学习插入算法 介绍 插入算法与选择算法类似,只不过“方向相反”,他的特点就是依次选择当前索引右边的元素,有序的插入当前索引左边的序列中,步骤如下: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已原创 2017-09-14 10:34:57 · 385 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的希尔排序算法(原)
上一节我们学习了插入算法,这一节来学习希尔排序算法 介绍 希尔排序是在插入排序基础上优化而来的,其思想就是利用插入排序最优时只需要O(n)的复杂度,我们可以对序列做调整,使其尽可能靠近最优序列,然后不断运算插入算法。详细步骤如下: 1. 挑选合适的步长 2. 以list[步长]为起点开始循环 3. 有了起点,原创 2017-09-14 10:39:12 · 461 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的堆排序算法(原)
上一节我们学习了希尔排序算法,这一节来学习堆排序算法 介绍 堆排序算法是基于堆这种数据结构设计的算法,理解了堆的概念就明白了堆算法的原理,因此我们简单介绍一下堆的数据结构。 堆的结构主要有以下几个特征: 1. 堆是由一个个小堆构成的,每个堆中,父节点都大于两个子节点,但是两个子节点的大小没有要求,既可以左子节点>右子节点,又可原创 2017-09-14 10:55:31 · 482 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的基数排序算法(原)
上一节我们学习了堆算法,这一节来学习基数算法 介绍 之前的所有算法都是基于比较的算法,而基数排序算法不同,他不是基于比较的,而是将整形的数据拆分为不同的位数分别进行排序,适用于数列中的数字相差不大的情况,其具体操作步骤如下: 1. 将所有数字按照最后一位数的内容放入map中,比如对于[25,1,3,21,23,5,9]这个序列,放入map后内容原创 2017-09-14 10:59:17 · 418 阅读 · 0 评论 -
算法系列之--Javascript和Kotlin的快速排序算法(原)
上一节我们学习了基数排序算法,这一节来学习快速排序算法 介绍 从这个快速排序算法的名字就可以看出他非常快,有多块呢?在平均状况下,排序n个项目要O(n log n)次比较。在最坏状况下则需要O(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现原创 2017-09-14 11:02:23 · 584 阅读 · 0 评论