// 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] ++ ;
}
}
}
}
2011年上半年軟考報名時間及方式匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |