Example #1
0
        public void Test07()
        {
            String[] a = new String[]
            {
                "S", "H", "E", "L", "L", "S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"
            };
            SortBase s = new Quick3Way();

            s.Sort(a);
            if (!s.IsSorted(a))
            {
                Console.WriteLine("排序失败");
                throw new Exception("排序失败");
            }

            s.Show(a);
        }
Example #2
0
        private static void Sort(string name, int length)
        {
            IComparable[] array;
            Stopwatch     watch = new Stopwatch();
            Example       sorter;

            switch (name)
            {
            case "Selection":
                array  = new Program().GetRandomIComparableArray(length);   //20170705
                sorter = new Selection();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("选择排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "Insertion":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new Selection();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("插入排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "InsertionPro":
                //array = new Program().GetRandomIComparableArray(length);
                //watch.Start();
                //new Insertion().SortPro(array);
                //watch.Stop();
                //Console.WriteLine("插入排序改进版法:" + watch.Elapsed);
                break;

            case "Shell":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new Shell();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("希尔排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "Merge":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new Merge();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("归并(自顶向下)排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "MergeBU":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new MergeBU();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("归并(自底向上)排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "Quick":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new Quick();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("快速排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "Quick3Way":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new Quick3Way();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("快速排序法(三向切分):" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;

            case "Heap":
                array  = new Program().GetRandomIComparableArray(length);
                sorter = new Heap();
                watch.Start();
                sorter.Sort(array);
                watch.Stop();
                Console.WriteLine("堆排序法:" + watch.Elapsed + "  结果是否有序 " + sorter.IsSorted(array));
                break;
            }
        }