归并排序
归并排序是一个典型的基于分治的递归算法。它不断地将原数组分成大小相等的两个子数组(可能相差1),最终当划分的子数组大小为1时(即left小于right不成立时) ,将划分的有序子数组合并成一个更大的有序数组。 归并排序思路分析: 归并排序算法有两个基本的操作,一个是分,也就是把原数组划分成两个子数组的过程。另一个是治,它将两个有序数组合并成一个更大的有序数组。 它将数组平均分成两部分: center = (left + right)/2,当数组分得足够小时---数组中只有一个元素时,只有一个元素的数组自然而然地就可以视为是有序的,此时就可以进行合并操作了。因此,上面讲的合并两个有序的子数组,是从 只有一个元素 的两个子数组开始合并的。 合并后的元素个数:从 1-->2-->4-->8...... 比如初始数组:[19,15,37,12,25] 0 1 2 3 4 19 15 37 12 25 第一步:分解 首先将数组拆分成两部分,即19 15 37为一组,12 25为一组,这是第一层,如图所示: 19 15 37 12 25 第二步:分解 将第一步得到的数组继续分解,19 15为一组,37为一组,12为一组,25为一组,这四组是第二层,如图所示: 19 15 37 12 25 第三步:分解 将第二步分解得到的数组再次分解,此时只剩下19 15这一组可以分解,所以继续分解,19为一组