示例#1
0
        public static void Test_File_Array_List(int seed)
        {
            int    n = 10;
            string filename;

            filename = @"mydataarraytest.txt";
            //filename = @"mydataarray.dat";
            MyFileArray myfilearray = new MyFileArray(filename, n);

            using (myfilearray.fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite))
            {
                Console.WriteLine("\n FILE ARRAY \n");
                myfilearray.Print(n);
                Radix_Sort(myfilearray);
                myfilearray.Print(n);
            }
            filename = @"mydatalisttest.txt";
            MyFileList myfilelist = new MyFileList(filename, n);

            using (myfilelist.fs = new FileStream(filename, FileMode.Open,
                                                  FileAccess.ReadWrite))
            {
                Console.WriteLine("\n FILE LIST \n");
                myfilelist.Print(n);
                Radix_Sort(myfilelist, seed);
                myfilelist.Print(n);
            }
        }
示例#2
0
        public static void Test_Array_Radix_Sort_File(int n)
        {
            string filename;

            filename = @"mydataarray.dat";
            MyFileArray myfilearray = new MyFileArray(filename, n);

            using (myfilearray.fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite))
            {
                var watch = System.Diagnostics.Stopwatch.StartNew();
                Radix_Sort(myfilearray);
                watch.Stop();
                Console.WriteLine(string.Format("{0, -10} {1, -10}", n, watch.Elapsed.TotalMilliseconds));
            }
        }
示例#3
0
        public static void Counting_Sort(DataArray items, int exp)
        {
            string resultsFile = "results.txt";
            string countFile   = "count.txt";
            int    n           = items.Length;

            MyFileArray results = new MyFileArray(n, resultsFile);
            MyFileArray count   = new MyFileArray(10, countFile);

            using (count.fs = new FileStream(countFile, FileMode.Open, FileAccess.ReadWrite))
            {
                using (results.fs = new FileStream(resultsFile, FileMode.Open, FileAccess.ReadWrite))
                {
                    int value;
                    for (int i = 0; i < n; i++)
                    {
                        value        = items[i] / exp % 10;
                        count[value] = count[value] + 1;
                    }

                    for (int i = 1; i < 10; i++)
                    {
                        count[i] = count[i] + count[i - 1];
                    }

                    for (int i = n - 1; i >= 0; i--)
                    {
                        value = items[i] / exp % 10;
                        results[count[value] - 1] = items[i];
                        count[value] = count[value] - 1;
                    }

                    for (int i = 0; i < n; i++)
                    {
                        items[i] = results[i];
                    }
                }
            }
        }