Beispiel #1
0
        //Part 1 : CountInversion() *Split*
        public static int CountInversion(List <int> numbers)
        {
            //base case
            if (numbers.Count == 1)
            {
                return(0);
            }

            //creat int midle , list left and right .
            var mid   = numbers.Count / 2;
            var left  = new List <int> ();
            var right = new List <int> ();

            //left is input list until midle and right is numbers after midle .
            left  = SplitLeft(numbers, left, mid);
            right = SplitRight(numbers, right, mid);

            //Initialize int counter that equle CountInversion(left) + CountInversion(right).
            var counter = CountInversion(left) + CountInversion(right);

            //sort left and right .
            left  = MergeSorter.MergeSort(left.ToArray()).ToList();
            right = MergeSorter.MergeSort(right.ToArray()).ToList();

            // return count(left , right , counter).
            return(Count(left, right, counter));
        }
        public static List <int> RandomSortedList()
        {
            var numbers = new List <int> ();
            var x       = new Random().Next(4, 10);

            for (int i = 0; i <= x; i++)
            {
                numbers.Add(new Random().Next(0, 100));
            }
            return(MergeSorter.MergeSort(numbers.ToArray()).ToList());
        }
Beispiel #3
0
        //**********************************************
        // Test Q9 merge sort
        //***********************************************
        public static bool TestMergeSoet()
        {
            var x = RandomIntArray();

            x = MergeSorter.MergeSort(x);
            for (int i = x.Length - 1; i > 0; i--)
            {
                if (x[i] < x[i - 1])
                {
                    return(false);
                }
            }
            return(true);
        }
Beispiel #4
0
        public static bool TestInversionsTwo()
        {
            var numbers = RandomIntArray().ToList();

            numbers = MergeSorter.MergeSort(numbers.ToArray()).ToList();

            var x       = new Random().Next(1, 5);
            var y       = new Random().Next(6, 10);
            var counter = 0;

            if (counter == Inversions.NumberOfInversions(numbers))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #5
0
        //****************************************************************
        //Test Q10 Inversions
        //****************************************************************
        public static bool TestInversions()
        {
            var numbers = RandomIntArray().ToList();

            numbers = MergeSorter.MergeSort(numbers.ToArray()).ToList();

            var i = new Random().Next(1, 20);
            var x = numbers[0];

            numbers[i] = numbers[0];
            numbers[0] = x;

            if (Inversions.NumberOfInversions(numbers) == i - 1)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }