归并排序
基本思想
归并排序是建立在归并操作上的一种有效的排序算法。将已有的子序列合并,得到完全有序的序列;即先使每个字序列有序,再使子序列段间有序。若将两个有序表合为一个有序表,称为归并。
实现过程
将待排序区间一分为二,然后在将左右两个区间继续分解,直至区间大小为1,然后两两比较将两个有序的区间合为一个有序的区间,以此类推直至整个区间有序,归并的过程类似于合并两个有序数组的过程。
图示:
代码实现:
public class Main{
//将两个已经有序的区间合并为一个有序的区间
private static void mergeData(int[] array,int left,int mid,int right,int[] temp){
//[left,mid) [mid,right)
int index = left;
int begin1 = left, end1 = mid, begin2 = mid, end2 = right;
while(begin1<end1 && begin2<end2){
if(array[begin1]<=array