Ejemplo n.º 1
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;
            }
        }