Ejemplo n.º 1
0
        public void ExampleTest3()
        {
            RadixSorter.RadixSort(_arr, 3, 3);

            _arr[0].Should().Be("aba");
            _arr[1].Should().Be("baa");
            _arr[2].Should().Be("bbb");
        }
Ejemplo n.º 2
0
        public void NullComparison()
        {
            var sorter = new RadixSorter();

            var list = GetReverseSequentialTestList();
            sorter.Sort(list, SortOrder.Ascending);
            AssertGeneralTestListSorted(list);
        }
Ejemplo n.º 3
0
 public Researcher(BubleSorter bubleSorter, ShellSorter shellSorter, QuickSorter quickSorter,
                   MergeSorter mergeSorter,
                   HeapSorter heapSorter, RadixSorter radixSorter, BuiltInSorter builtInSorter, DataGenerator dataGenerator,
                   IOptions <ResearcherSettings> options)
 {
     _dataGenerator = dataGenerator;
     _settings      = options.Value;
     _sorters       = new Sorter[]
     {
         bubleSorter, shellSorter, quickSorter, mergeSorter, heapSorter, radixSorter, builtInSorter
     };
 }
Ejemplo n.º 4
0
        public BenchmarkRadixSort()
        {
            sources = new float[100][];

            for (int i = 0; i < sources.Length; i++)
            {
                sources[i] = Enumerable.Range(0, 1 << 20).Select(value => ((float)value - (1 << 19)) * MathF.Sqrt(i + 1f)).ToArray();
                sources[i].Shuffle();
            }

            sources.Shuffle();
            radix = new RadixSorter();
        }
Ejemplo n.º 5
0
        public void SortExample()
        {
            var sorter = new RadixSorter();

            var list = new List<int> {13, 5, 77, 9, 12};

            sorter.Sort(list);

            Assert.AreEqual(5, list[0]);
            Assert.AreEqual(9, list[1]);
            Assert.AreEqual(12, list[2]);
            Assert.AreEqual(13, list[3]);
            Assert.AreEqual(77, list[4]);
        }
Ejemplo n.º 6
0
        public static void SortsArray([Random(0, 1000, 100, Distinct = true)] int n)
        {
            // Arrange
            var sorter = new RadixSorter();

            var(correctArray, testArray) = RandomHelper.GetArrays(n);

            // Act
            sorter.Sort(testArray);
            Array.Sort(correctArray);

            // Assert
            Assert.AreEqual(correctArray, testArray);
        }
Ejemplo n.º 7
0
        public void Sort_DoesNotChange_OriginalInput()
        {
            //arrange
            const int firstElement = 5, lastElement = 3;
            var       original = new List <int> {
                firstElement, 2, 4, 6, 1, lastElement
            };
            var sorter = new RadixSorter();
            //act
            var sorted = sorter.Sort(original);

            //assert
            original[0].Should().Be(firstElement);
            original[5].Should().Be(lastElement);
        }
Ejemplo n.º 8
0
        public void SortExample()
        {
            var sorter = new RadixSorter();

            var list = new List <int> {
                13, 5, 77, 9, 12
            };

            sorter.Sort(list);

            Assert.AreEqual(5, list[0]);
            Assert.AreEqual(9, list[1]);
            Assert.AreEqual(12, list[2]);
            Assert.AreEqual(13, list[3]);
            Assert.AreEqual(77, list[4]);
        }
Ejemplo n.º 9
0
		public void Simple2()
        {
            var sorter = new RadixSorter();

            var list1 = new List<int> {1, 2};
            sorter.Sort(list1, SortOrder.Ascending);

            Assert.AreEqual(1, list1[0]);
            Assert.AreEqual(2, list1[1]);

            var list2 = new List<int> {1, 2};
            sorter.Sort(list2, SortOrder.Descending);

            Assert.AreEqual(2, list2[0]);
            Assert.AreEqual(1, list2[1]);


        }
Ejemplo n.º 10
0
        static void TestRadixSort()
        {
            try
            {
                Sorter sorter = new RadixSorter();
                Console.WriteLine("Testing sort: " + sorter.GetType().Name);

                int[] arr = GenerateArray(10, 0, 10);
                Console.WriteLine("Source array: " + ArrToString(arr));
                sorter.Sort(arr);
                Console.WriteLine("Resulting array: " + ArrToString(arr));
                Console.WriteLine("OK!");
            }
            catch (Sorter.InvalidRealizationException ex)
            {
                Console.WriteLine(ex.Info);
            }
        }
Ejemplo n.º 11
0
        public void Sort_Returns_AscOrderedCollection()
        {
            //arrange
            var original = new List <int> {
                5, 2, 4, 6, 1, 3
            };
            var sorter = new RadixSorter();
            //act
            var sorted = sorter.Sort(original).ToList();
            //assert
            var prev = sorted[0];

            for (var i = 1; i < sorted.Count; i++)
            {
                prev.Should().BeLessOrEqualTo(sorted[i]);
                prev = sorted[i];
            }
        }
Ejemplo n.º 12
0
        static void Analise()
        {
            // Measuring merge sorter
            Sorter merge = new MergeSorter();
            Sorter tree  = new TreeSorter();
            Sorter radix = new RadixSorter();

            var mergeTimes = AnaliseSorterRandom(merge);
            var treeTimes  = AnaliseSorterRandom(tree);
            var radixTimes = AnaliseSorterRandom(radix);

            File.WriteAllLines("mergeRandom.txt", ToStringArray(mergeTimes));
            File.WriteAllLines("treeRandom.txt", ToStringArray(treeTimes));
            File.WriteAllLines("radixRandom.txt", ToStringArray(radixTimes));

            mergeTimes = AnaliseSorterReverted(merge);
            treeTimes  = AnaliseSorterReverted(tree);
            radixTimes = AnaliseSorterReverted(radix);

            File.WriteAllLines("mergeReverted.txt", ToStringArray(mergeTimes));
            File.WriteAllLines("treeReverted.txt", ToStringArray(treeTimes));
            File.WriteAllLines("radixReverted.txt", ToStringArray(radixTimes));
        }
Ejemplo n.º 13
0
        public void RadixSorterTest()
        {
            IRadixSorter radixSorter = new RadixSorter();

            RunTests(radixSorter);
        }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            Console.WriteLine("请选择算法:");
            Console.WriteLine("1.选择排序");
            Console.WriteLine("2.冒泡排序");
            Console.WriteLine("3.高速排序");
            Console.WriteLine("4.插入排序");
            Console.WriteLine("5.希尔排序");
            Console.WriteLine("6.归并排序");
            Console.WriteLine("7.基数排序");
            Console.WriteLine("8.计数排序");
            Console.WriteLine("9.堆排序");
            Console.WriteLine("0.退出");
            int    type     = Convert.ToInt32(Console.ReadLine());
            string typename = "";

            switch (type)
            {
            case 1:    //选择排序
                typename = "选择排序";
                break;

            case 2:    //冒泡排序
                typename = "冒泡排序";
                break;

            case 3:    //高速排序
                typename = "高速排序";
                break;

            case 4:    //插入排序
                typename = "插入排序";
                break;

            case 5:    //希尔排序
                typename = "希尔排序";
                break;

            case 6:    //归并排序
                typename = "归并排序";
                break;

            case 7:    //基数排序
                typename = "基数排序";
                break;

            case 8:    //计数排序
                typename = "计数排序";
                break;

            case 9:    //堆排序
                typename = "堆排序";
                break;

            default:
                typename = "您未选择算法";
                break;
            }
            Console.WriteLine("您选择了{0}.{1}:", type, typename);
            int[] arrInt      = new int[] { 4, 2, 7, 1, 8, 3, 9, 0, 5, 6 };
            int[] intArray    = new int[] { 5, 3, 7, 4, 8, 2, 9, 1, 0, 6 };
            int[] newIntArray = intArray;
            switch (type)
            {
            case 1:    //选择排序
                SelectionSorter selSor = new SelectionSorter();
                selSor.Sort(arrInt);
                foreach (int i in arrInt)
                {
                    Console.WriteLine(i);
                }
                Console.ReadKey();
                break;

            case 2:    //冒泡排序
                EbullitionSorter ebuSor = new EbullitionSorter();
                ebuSor.Sort(arrInt);
                foreach (int i in arrInt)
                {
                    Console.WriteLine(i);
                }
                Console.ReadKey();
                break;

            case 3:    //高速排序
                QuickSorter quiSor = new QuickSorter();
                quiSor.Sort(arrInt, 0, arrInt.Length - 1);
                foreach (int i in arrInt)
                {
                    Console.WriteLine(i);
                }
                Console.ReadKey();
                break;

            case 4:    //插入排序
                InsertionSorter insSor = new InsertionSorter();
                insSor.Sort(arrInt);
                foreach (int i in arrInt)
                {
                    Console.WriteLine(i);
                }
                Console.ReadKey();
                break;

            case 5:    //希尔排序
                ShellSorter sheSor = new ShellSorter();
                sheSor.Sort(arrInt);
                foreach (int i in arrInt)
                {
                    Console.WriteLine(i);
                }
                Console.ReadKey();
                break;

            case 6:    //归并排序
                while (true)
                {
                    Console.WriteLine("请选择:");
                    Console.WriteLine("1.归并排序(非递归)");
                    Console.WriteLine("2.归并排序(递归)");
                    Console.WriteLine("3.归并排序(自然合并)");
                    Console.WriteLine("4.退出");
                    int Arraynum = Convert.ToInt32(Console.ReadLine());
                    switch (Arraynum)
                    {
                    case 4:
                        Environment.Exit(0);
                        break;

                    case 1:
                        Console.WriteLine("Please Input Array Length");
                        int      Leng271 = Convert.ToInt32(Console.ReadLine());
                        Function obj1    = new Function(Leng271);

                        Console.WriteLine("The original sequence:");
                        Console.WriteLine(obj1);
                        Console.WriteLine("'MergeSort' Finaly Sorting Result:");
                        obj1.ToMergeSort();
                        Console.WriteLine(obj1);
                        break;

                    case 2:
                        Console.WriteLine("Please Input Array Length");
                        int      Leng272 = Convert.ToInt32(Console.ReadLine());
                        Function obj2    = new Function(Leng272);

                        Console.WriteLine("The original sequence:");
                        Console.WriteLine(obj2);
                        Console.WriteLine("'RecursiveMergeSort' Finaly Sorting Result:");
                        obj2.ToRecursiveMergeSort();
                        Console.WriteLine(obj2);
                        break;

                    case 3:
                        Console.WriteLine("Please Input Array Length");
                        int      Leng273 = Convert.ToInt32(Console.ReadLine());
                        Function obj3    = new Function(Leng273);

                        Console.WriteLine("The original sequence:");
                        Console.WriteLine(obj3);
                        obj3.ToNaturalMergeSort();
                        Console.WriteLine(); Console.WriteLine();
                        Console.WriteLine("'NaturalMergeSort' Finaly Sorting Result:");
                        Console.WriteLine(obj3);
                        break;
                    }
                }

            case 7:    //基数排序
                RadixSorter rS = new RadixSorter();
                newIntArray = rS.RadixSort(intArray, intArray.Length);
                foreach (int i in intArray)
                {
                    Console.Write(i + " ");
                }
                Console.ReadKey();
                break;

            case 8:    //计数排序

                int[] intNewArray = intArray;
                intNewArray = Counting.CountingSort(intArray, intArray.Length);
                foreach (int i in intNewArray)
                {
                    Console.Write(i + " ");
                }
                Console.ReadKey();
                break;

            case 9:    //堆排序
                HeapSort.HeapSortFunction(intArray);
                foreach (int i in intArray)
                {
                    Console.Write(i + " ");
                }
                Console.ReadKey();
                break;

            default:
                Environment.Exit(0);
                break;
            }
        }
Ejemplo n.º 15
0
		public void Simple1()
        {
            var sorter = new RadixSorter();
            TestSorter(sorter);
        }
Ejemplo n.º 16
0
		public void ExceptionNullList3()
        {
            var sorter = new RadixSorter();
            sorter.Sort(null, SortOrder.Ascending);
        }
Ejemplo n.º 17
0
		public void ExceptionNullList1()
        {
            var sorter = new RadixSorter();
            sorter.Sort(null);
        }