private void AssetMerge(int[] firstHalf, int[] secondHalf, int[] expectedMergeArray)
        {
            MergeSort mergeSort   = new MergeSort();
            var       outputArray = mergeSort.Merge(firstHalf, secondHalf);

            Assert.IsTrue(outputArray.SequenceEqual(expectedMergeArray));
        }
Beispiel #2
0
        public void TestMerge(int[] arr1, int[] arr2, int[] array)
        {
            var alg = new MergeSort <int>();
            var res = alg.Merge(arr1, arr2);

            Assert.Equal(array, res);
        }
Beispiel #3
0
        /// <summary>
        /// Selects survivors for the next generation.
        /// </summary>
        /// <returns>A Fitness-sorted selection of survivors.</returns>
        /// <remarks>
        /// Assumes the <paramref name="parents"/> and <paramref name="children"/> collections are sorted by fitness.
        /// </remarks>
        public IEnumerable <IGenotype> SelectSurvivors(IEnumerable <IGenotype> parents, IEnumerable <IGenotype> children)
        {
            var orderedParents = parents.OrderByDescending(parent => parent.Fitness);
            var elite          = orderedParents.Take(this.eliteCount);

            return(MergeSort.Merge(children, elite, GenotypeComparer));
        }
        public void Merge()
        {
            var values1 = new List <int> {
                10, 1
            };

            MergeSort.Merge(values1, 0, 0, 1);
            Assert.IsTrue(UtilsTests.IsSortedAscendingly(values1));

            var values2 = new List <int> {
                10, 1
            };

            // Indexes are such that the list will not get sorted,
            MergeSort.Merge(values2, 0, 1, 1);
            Assert.IsTrue(values2[0] == 10);
            Assert.IsTrue(values2[1] == 1);

            var values3 = new List <int> {
                10, 41, 3, 10
            };

            MergeSort.Merge(values3, 0, 1, 3);
            Assert.IsTrue(UtilsTests.IsSortedAscendingly(values3));
        }
        public void ShouldReturnOrderedArrayWhenTwoOrderedArraysArePassed()
        {
            var orderedArray1 = new int[] { 2, 3, 5 };
            var orderedArray2 = new int[] { 2, 7, 9 };
            var result        = MergeSort.Merge(orderedArray1, orderedArray2);

            Assert.Equal(new int[] { 2, 2, 3, 5, 7, 9 }, result);
        }
        public void ShouldReturnOrderedArrayWhenTwoNumbersArePassed()
        {
            var orderedArray1 = new int[] { 2 };
            var orderedArray2 = new int[] { 6 };
            var result        = MergeSort.Merge(orderedArray1, orderedArray2);

            Assert.Equal(new int[] { 2, 6 }, result);
        }
Beispiel #7
0
        public void MergeSort_WhengivenValidArray_AlwaysReturnsSorted()
        {
            var sentance = new char[] { 'e', 'e', 'g', 'm', 'r', 'a', 'c', 'e', 'r', 't' };

            var sortedSentance = MergeSort <char> .Merge(sentance);

            System.Console.WriteLine(sentance);
            System.Console.WriteLine(sortedSentance);
        }
 static void Main(string[] args)
 {
     int[] dimensioni = { 20, 50, 100, 500, 1000, 2000, 5000, 10000, 20000, 30000, 40000, 50000, 60000, 100000 };
     using (StreamWriter w = new StreamWriter("stat.csv", false, Encoding.UTF8))
     {
         w.WriteLine("Algoritmo;Dimensione;Tempo");
         foreach (int dim in dimensioni)
         {
             int[]  array = new int[dim];
             Random rnd   = new Random();
             for (int i = 0; i < dim; i++)
             {
                 array[i] = rnd.Next(0, 10000000);
             }
             Stopwatch s = new Stopwatch();
             s.Restart();
             BubbleSort.Sort(array);
             s.Stop();
             long elapsed = s.ElapsedMilliseconds;
             Console.WriteLine($"BubbleSort:{dim},{elapsed}");
             w.WriteLine($"BubbleSort;{dim};{elapsed}");
             for (int i = 0; i < array.Length; i++)
             {
                 array[i] = rnd.Next(0, 100000);
             }
             s.Restart();
             Sort.Insert(array);
             s.Stop();
             elapsed = s.ElapsedMilliseconds;
             Console.WriteLine($"InsertionSort:{dim},{elapsed}");
             w.WriteLine($"InsertionSort; {dim}; {elapsed}");
             for (int i = 0; i < array.Length; i++)
             {
                 array[i] = rnd.Next(0, 100000);
             }
             s.Restart();
             Selection.Sort(array);
             s.Stop();
             elapsed = s.ElapsedMilliseconds;
             Console.WriteLine($"SelectionSort:{dim},{elapsed}");
             w.WriteLine($"SelectionSort; {dim}; {elapsed}");
             for (int i = 0; i < array.Length; i++)
             {
                 array[i] = rnd.Next(0, 100000);
             }
             s.Restart();
             MergeSort.Merge(array);
             s.Stop();
             elapsed = s.ElapsedMilliseconds;
             Console.WriteLine($"MergeSort:{dim},{elapsed}");
             w.WriteLine($"MergeSort;{dim}; {elapsed}");
         }
         w.Flush();
         Console.WriteLine("fine!");
     }
     Console.ReadLine();
 }
        private void ChildTaskDone(Processor processor)
        {
            int decrementedValue = Interlocked.Decrement(ref m_counter);

            if (decrementedValue == 0)
            {
                MergeSort.Merge(m_array, m_start, m_end);
                SignalTaskDone(processor);
            }
        }
Beispiel #10
0
        public void MergeArray()
        {
            var sut    = new MergeSort <double>();
            int size   = _Random.Next(100);
            var x      = GenerateRandomArray(size).OrderBy(t => t).ToArray();
            var y      = GenerateRandomArray(size).OrderBy(t => t).ToArray();
            var result = sut.Merge(x, y);

            Assert.That(result, Has.Exactly(size * 2).Items);
            Assert.That(result, Is.Ordered.Ascending);
        }
        private static void Merge(List <object[]> left, List <object[]> right)
        {
            List <object[]> result   = MergeSort.Merge(left, right);
            List <object[]> expected = left.Concat(right).ToList();

            expected.Sort((val1, val2) => ((IComparable)val1.GetValue(MergeSort.ColumnIndex)).CompareTo(val2.GetValue(MergeSort.ColumnIndex)));
            Assert.AreEqual(result.Count, expected.Count);

            for (int k = 0; k < result.Count; k++)
            {
                for (int i = 0; i < result[k].Length; i++)
                {
                    Assert.AreEqual((result[k])[i], (expected[k])[i]);
                }
            }
        }
Beispiel #12
0
        public void GenericMergeSort_WhenGivenTypeOfCharArray_AlwaysReturnsSorted()
        {
            var sentance = new char[] { 'd', 'e', 'n', 'n', 'i', 's', 'o', 'c', 'o', 'n', 'n', 'e', 'l', 'l' };

            var sortedSentance = MergeSort <char> .Merge(sentance);
        }