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

2011年软件设计师辅导:并行排序算法(6)
#
private static void Main( string [] args)
{ #
Vector[] vectors = GetVectors(); #
Console.WriteLine( string .Format( " n = {0} " , vectors.Length));
Stopwatch watch1 = new Stopwatch();
watch1.Start();
#
A(vectors); #
watch1.Stop();
#
Console.WriteLine( " A sort time: " + watch1.Elapsed);
#
Print(vectors);
#
vectors = GetVectors(); #
watch1.Reset();
#
watch1.Start();
#
B(vectors); #
watch1.Stop();
#
Console.WriteLine( " B sort time: " + watch1.Elapsed);
Print(vectors);
#
vectors = GetVectors(); #
watch1.Reset(); #
watch1.Start(); #
C(vectors);
#
watch1.Stop(); #
Console.WriteLine( " C sort time: " + watch1.Elapsed);
Print(vectors); #
vectors = GetVectors();
watch1.Reset();
watch1.Start(); #
D(vectors);
#
watch1.Stop(); #
Console.WriteLine( " D sort time: " + watch1.Elapsed); #
Print(vectors);
#
Console.ReadKey(); #
}
#
private static Vector[] GetVectors() #
{
int n = 1 << 21 ; #
Vector[] vectors = new Vector[n]; #
Random random = new Random(); #
for ( int i = 0 ; i < n; i ++ )
{
vectors[i] = new Vector(); #
vectors[i].X = random.NextDouble();
vectors[i].Y = random.NextDouble(); #
vectors[i].Z = random.NextDouble(); #
vectors[i].W = random.NextDouble();
}
#
return vectors;
} #
private static void A(Vector[] vectors) #
{
Array.Sort(vectors, new VectorComparer());
#
} #
private static void B(Vector[] vectors)
{ #
int n = vectors.Length;
#
for ( int i = 0 ; i < n; i ++ )
{ #
Vector c1 = vectors[i];
#
c1.T = Math.Sqrt(Math.Pow(c1.X, 2 )
#
+ Math.Pow(c1.Y, 2 ) #
+ Math.Pow(c1.Z, 2 ) #
+ Math.Pow(c1.W, 2 )); #
} #