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

更新时间:2019-09-11    来源:中级会计职称    手机版     字体:

【www.kwkids.com--中级会计职称】

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] ++ ;

  }

  }

  }

  }

 

本文来源:http://www.kwkids.com/caikuailei/29440.html

热门标签

更多>>

本类排行