算法基本思想
合并排序算法是用分治策略实现对n个元素进行排序的算法,其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好的子集合合并成要求的排好序的集合·。
算法描述
合并排序算法可递归地描述如下:
template<class Type>
void MergeSort(Type a[], int left, int right) {
if (left < right) {
int i = (left + right) / 2;
MergeSort(a, left, i);
MergeSort(a, i + 1, right);
Merge(a, b, left, i, right);
Copy(a, b, left, right);
}
}
Merge是将两个有序的是组合并到一个新的数组(b)中,而Copy是将新数组(b)复制回到原数组中(a)中。
完整代码
#