public void SortColorAscending(List <Tshirt> tshirts) { if (tshirts == null || tshirts.Count <= 1) { return; } int m = Enum.GetNames(typeof(Color)).Length; int n = tshirts.Count / m; List <Tshirt>[] buckets = new List <Tshirt> [n]; for (int i = 0; i < n; i++) { buckets[i] = new List <Tshirt>(); } for (int i = 0; i < tshirts.Count; i++) { int bucket = (int)tshirts[i].Color; buckets[bucket].Add(tshirts[i]); } ISortStrategy strategy = new BubbleSortStrategy(); for (int i = 0; i < n; i++) { strategy.SortColorAscending(buckets[i]); } int index = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < buckets[i].Count; j++) { tshirts[index++] = buckets[i][j]; } } }
private static void CompareSorts(List <Tshirt> tshirts) { ISortStrategy strategy = new QuickSortStrategy(); long ms1 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; strategy.SortColorAscending(tshirts); long ms2 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; Console.WriteLine($"Time elapsed for QuickSort: {ms2 - ms1}ms"); strategy = new BubbleSortStrategy(); ms1 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; strategy.SortColorAscending(tshirts); ms2 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; Console.WriteLine($"Time elapsed for BubbleSort: {ms2 - ms1}ms"); strategy = new BucketSortStrategy(); ms1 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; strategy.SortColorAscending(tshirts); ms2 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; Console.WriteLine($"Time elapsed for BucketSort: {ms2 - ms1}ms\n"); }