归并排序
归并排序是一个典型的基于分治的递归算法。它不断地将原数组分成大小相等的两个子数组(可能相差1),最终当划分的子数组大小为1时,将划分的有序子数组组合并成一个更大的有序数组。 算法分析: 分,也就是把原数组划分成两个子数组的过程。 治,它将两个有序数组合并成一个更大的有序数组。 它将数组平均分成两部分:center=(left+right)/2,当数组分的足够小时(数组中只有一个元素时),只有一个元素的数组自然而然地就可以视为是有序的,此时就可以进行合并操作了。因此,上面讲的合并两个有序的子数组,是从只有一个元素的两个字数组开始合并的。 合并后的元素个数:从1->2->4->8->... 举例: 比如初始数组为:[24,13,25,1,2,27,38,15] 1)分成了两个大小相等的子数组:[24,13,25,1],[2,27,38,15] 2)再划分成四个大小相等的子数组:[24,13],[25,1],[2,27],[38,15] 3)此时,left<right还是成立的,再分为:[24],[13],[25],[1],[2],[27],[38],[15] 此时,有8个小数组,每个数组都可以视为有序的数组!每个数组中的left=right,从递归中返回,故开始执行合并(第21行): merge(