public static void Sort(DataArray items)
        {
            MyDataArray copy = new MyDataArray(items.Length);

            for (int i = 0; i < items.Length; i++)
            {
                copy.set(i, items[i]);
            }

            if (items.Length == 0)
            {
                return;
            }

            int minValue = items[0];
            int maxValue = minValue;

            for (int i = 0; i < items.Length; i++)
            {
                if (minValue > items[i])
                {
                    minValue = (int)items[i];
                }

                if (maxValue < items[i])
                {
                    maxValue = (int)items[i];
                }
            }

            int[] frequency = new int[maxValue - minValue + 1];

            for (int i = 0; i < items.Length; i++)
            {
                frequency[(int)items[i] - minValue]++;
            }

            frequency[0]--;
            for (int i = 1; i < frequency.Length; i++)
            {
                frequency[i] = frequency[i] + frequency[i - 1];
            }

            for (int i = copy.Length - 1; i >= 0; i--)
            {
                items.set(frequency[copy[i] - minValue]--, copy[i]);
            }
        }
        public static void testOP(int seed)
        {
            Console.WriteLine("\n\n SELECTION SORT DATA ARRAY ");
            Console.WriteLine(longLine);
            MyDataArray dataArray = new MyDataArray(arrayLength, seed);

            dataArray.Print(arrayLength);

            Console.WriteLine(longLine);
            Sort(dataArray);
            dataArray.Print(arrayLength);

            Console.WriteLine("\n\n SELECTION SORT DATA LIST");
            Console.WriteLine(longLine);
            MyDataList dataList = new MyDataList(arrayLength, seed);

            dataList.Print(arrayLength);

            Console.WriteLine(longLine);
            Sort(dataList);
            dataList.Print(arrayLength);
        }
        public static void testArrayTimes(int seed)
        {
            int[] numElementsArray = { 12800, 25600, 51200, 102400, 204800, 409600 };

            foreach (int numberOfElements in numElementsArray)
            {
                Console.Write("\nElements: " + numberOfElements);
                MyDataArray dataArray = new MyDataArray(numberOfElements, seed);
                var         watch     = System.Diagnostics.Stopwatch.StartNew();
                Sort(dataArray);
                watch.Stop();
                Console.Write(" Data array time:" + watch.ElapsedMilliseconds);
                string      filename  = "@mydataarraytimes.dat";
                MyFileArray fileArray = new MyFileArray(filename, numberOfElements, seed);
                using (fileArray.fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
                {
                    watch = System.Diagnostics.Stopwatch.StartNew();
                    Sort(fileArray);
                    watch.Stop();
                    Console.Write(" File array:" + watch.ElapsedMilliseconds);
                }
            }
        }