本文实例为大家分享了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 + +); } } 捕获(异常交货) {} }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。