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; } }
public ArrayStatusEntry(string name, NumericArrayStatus status) { Name = name; Status = status; }