赞
踩
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
归并排序的基本思想就是把两段有序的子区间归并成有序的,具体如图所示:
例子:给定数组a[8]={10,6,7,1,3,9,4,2};
//归并排序 void _MergeSort(int*a, int begin, int end, int *tmp) { //拆分 if (begin >= end) { return; } int mid = (begin + end) >> 1; _MergeSort(a, begin, mid, tmp); _MergeSort(a, mid + 1, end, tmp); //合并 int begin1 = begin, end1 = mid; int begin2 = mid + 1, end2 = end;//分成两个无序序列[begin,mid][mid+1,end] int tindex = begin; while (begin1 <= end1 && begin2 <= end2) { if (a[begin1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。