c#排序算法之归并排序

  

本文实例为大家分享了c#实现归并排序具体代码,供大家参考,具体内容如下

  

代码:      //归并排序(目标数组,子表的起始位置,子表的终止位置)   私有静态孔隙MergeSortFunction (int[]数组,int, int最后)   {   试一试   {   如果(第& lt;最后)//子表的长度大于1,则进入下面的递归处理   {   int中期=(姓+)/2;//子表划分的位置   MergeSortFunction(数组,第一,中);//对划分出来的左侧子表进行递归划分   MergeSortFunction(数组,中期+ 1,);//对划分出来的右侧子表进行递归划分   MergeSortCore(数组,第一,中,最后一个);//对左右子表进行有序的整合(归并排序的核心部分)   }   }   捕获(异常交货)   {}   }//归并排序的核心部分:将两个有序的左右子表(以中期区分),合并成一个有序的表   私有静态孔隙MergeSortCore (int[]数组,int, int中期,int最后)   {   试一试   {   int indexA=第一;//左侧子表的起始位置   int indexB=中期+ 1;//右侧子表的起始位置   int [] temp=new int(上+ 1);//声明数组(暂存左右子表的所有有序数列):长度等于左右子表的长度之和。   int tempIndex=0;   而(indexA & lt;中期=,,indexB & lt;=去年)//进行左右子表的遍历,如果其中有一个子表遍历完,则跳出循环   {   如果数组(数组(indexA) & lt;=[indexB])//此时左子表的数& lt;=右子表的数   {   临时[tempIndex + +]=array [indexA + +);//将左子表的数放入暂存数组中,遍历左子表下标+ +   }//此其他时左子表的数比;右子表的数   {   临时[tempIndex + +]=array [indexB + +);//将右子表的数放入暂存数组中,遍历右子表下标+ +   }   }//有一侧子表遍历完后,跳出循环,将另外一侧子表剩下的数一次放入暂存数组中(有序)   而中期(indexA & lt;=)   {   临时[tempIndex + +]=array [indexA + +);   }   而(indexB & lt;=)   {   临时[tempIndex + +]=array [indexB + +);   }//将暂存数组中有序的数列写入目标数组的制定位置,使进行归并的数组段有序   tempIndex=0;   for (int i=第一;我& lt;=去年;我+ +)   {   [我]=临时数组(tempIndex + +);   }   }   捕获(异常交货)   {}   }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
  

c#排序算法之归并排序