从分治算法到 MapReduce
从分治算法说起 要说 MapReduce 就不得不说分治算法,而分治算法其实说白了,就是四个字 分而治之 。其实就是将一个复杂的问题分解成多组相同或类似的子问题,对这些子问题再分,然后再分。直到最后的子问题可以简单得求解。 要具体介绍分治算法,那就不得不说一个很经典的排序算法 -- 归并排序。这里不说它的具体算法代码,只说明它的主要思想。而归并排序的思想正是分治思想。 归并排序采用递归的方式,每次都将一个数组分解成更小的两个数组,再对这两个数组进行排序,不断递归下去。直到分解成最简单形式的两个数组的时候,再将这一个个分解后的数组进行合并。这就是归并排序。 下面有一个取自百度百科的具体例子可以看看: 我们可以看到,初始的数组是:{10,4,6,3,8,2,5,7} 第一次分解后,变成两个数组:{10,4,6,3},{8,2,5,7} 分解到最后为 5 个数组:{10},{4,6},{3,8},{2,5},{7} 然后分别合并并排序,最后排序完成:{2,3,4,5,6,7,8,10} 上述的例子这是比较简单的情况,那么我们想想看,当这个数组很大的时候又该怎么办呢?比如这个数组达到 100 ...