环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 计算机类 > 软件水平认证考试 > 考试辅导 >

2011年软件设计师辅导:并行排序算法(4)

2011-03-15 来源:互联网 作者:第一考试网

2011年软件设计师辅导:并行排序算法(4)

#

  // Merge sort #

  MergeSort < T > mergeSort = new MergeSort < T > (); #

  List < T[] > source = new List < T[] > (processorCount); #

  foreach (ParallelEntity pe in partArray)

#

  { #

  source.Add(pe.Array);

#

  } #

  mergeSort.Sort(array, source, comparer); #

  } #

  } #

  } #

  多路归并排序类 MergeSort #

  using System; #

  using System.Collections.Generic; #

  using System.Linq;

#

  using System.Text; #

  namespace Sort #

  { #

  /**/ /// #

  /// MergeSort #

  /// #

  /// #

  public class MergeSort < T >

#

  { #

  public void Sort(T[] destArray, List < T[] > source, IComparer < T > comparer)

#

  {

#

  // Merge Sort

#

  int [] mergePoint = new int [source.Count]; #

  for ( int i = 0 ; i < source.Count; i ++ ) #

  {

#

  mergePoint[i] = 0 ; #

  }

#

  int index = 0 ; #

  while (index < destArray.Length) #

  {

#

  int min = - 1 ; #

  for ( int i = 0 ; i < source.Count; i ++ ) #

  { #

  if (mergePoint[i] >= source[i].Length) #

  { #

  continue ;

#

  } #

  if (min < 0 ) #

  {

#

  min = i;

#

  } #

  else

#

  {

#

  if (comparer.Compare(source[i][mergePoint[i]], source[min][mergePoint[min]]) < 0 )

#

  {

#

  min = i;

#

  } #

  }

#

  } #

  if (min < 0 ) #

  {

#

  continue ; #

  }

#

  destArray[index ++ ] = source[min][mergePoint[min]]; #

  mergePoint[min] ++ ; #

  } #

  } #

  } #

  } #

 

#

责编: 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心