2-路归并

排序|归并排序

Deadly 提交于 2020-11-28 04:11:59
归并( Merge )排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并 :将两个已经排好序的集合合并到一个集合众,并且 保证新的集合也是有序的 。 核心点 :只有一个元素的集合是已经排好序的集合。归并排序是建立在归并操作上的一种有效的排序算法。归并排序算法是采用分治法( Divide And Conquer )的一个非常典型的应用。 归并排序流程: 1.对任意的元素数目为m集合,可以分成m个只有一个元素的子集合。 2.对其m个元素只有一个的集合实现归并操作,可以得到[m/2]个新的子集合([ 如果m不是偶数 ],细节问题,多出的单独保留,即存有[m/2 + 1]个集合),关键的是这些新的集合也是有序的。 3.重复2的操作,直至最后只有一个集合。 由于各子集合始终保持有序,最终的集合也是有序的,也就得到了排序后的集合,算法目的实现。 在这里,我们不是用递归来实现。按照思想,归并排序的实现代码如下: //归并排序 public static void MergeSort(int[] array) { //以空间换取时间 int[] temp = new int[array.Length]; //size子数组的长度 //默认为1个元素的子集合(即铁定已排好序的集合) int size