コード例 #1
0
        public void SortTshirtAscending(List <Tshirt> tshirts)
        {
            if (tshirts == null || tshirts.Count <= 1)
            {
                return;
            }

            int m = Enum.GetNames(typeof(Size)).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].Size;
                buckets[bucket].Add(tshirts[i]);
            }

            ISortStrategy strategy = new BubbleSortStrategy();

            for (int i = 0; i < n; i++)
            {
                strategy.SortTshirtAscending(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];
                }
            }
        }