public NumericArrayModel(int size, NumericArrayStatus status)
        {
            Random rnd;

            switch (status)
            {
            case NumericArrayStatus.Random:
                rnd    = new Random();
                _array = Enumerable.Range(1, size).OrderBy(r => rnd.Next()).ToArray();
                break;

            case NumericArrayStatus.FewUnique:
                _array = new int[size];
                int   splitCount = 4;
                float term       = size / (float)splitCount;
                for (int i = 1; i <= size; i++)
                {
                    _array[i - 1] = (int)(Math.Ceiling(i / term) * term);
                }

                rnd    = new Random();
                _array = _array.OrderBy(r => rnd.Next()).ToArray();
                break;

            case NumericArrayStatus.Reversed:
                _array = Enumerable.Range(1, size).Reverse().ToArray();
                break;

            case NumericArrayStatus.AlmostSorted:
                rnd = new Random();
                int rndIndex = rnd.Next(1, size);
                _array = Enumerable.Range(1, size).OrderBy(r => rndIndex == r ? rnd.Next(1, size) + 0.5 : r).ToArray();
                break;

            case NumericArrayStatus.Sorted:
            default:
                _array = Enumerable.Range(1, size).ToArray();
                break;
            }
        }
Example #2
0
 public ArrayStatusEntry(string name, NumericArrayStatus status)
 {
     Name   = name;
     Status = status;
 }