Example #1
0
        public Сomparison GetСomparison()
        {
            Сomparison comparison = (Сomparison)Session["Сomparison"];

            if (comparison == null)
            {
                comparison            = new Сomparison();
                Session["Сomparison"] = comparison;
            }
            return(comparison);
        }
        /// <summary>
        /// Выполняет сортировку слиянием
        /// </summary>
        /// <param name="strings">Исходный массив строк</param>
        /// <param name="left">Левый индекс сортируемого массива</param>
        /// <param name="right">Правый индекс сортируемого массива</param>
        /// <param name="compare">Метод, выполняющий сравнение строк</param>
        private static void MergeSort(string[] strings, int left, int right, Сomparison compare)
        {
            if (left < right)
            {
                int middle = (right + left) / 2;

                MergeSort(strings, left, middle, compare);
                MergeSort(strings, middle + 1, right, compare);

                Merge(strings, left, middle, right, compare);
            }
        }
Example #3
0
        public static void Main(string[] args)
        {
            var сomparisonDel = new Сomparison(СomparisonMethod);

            string[] strings = { "qwe", "qwert", "abc", "qwerty" };
            Sort(strings, сomparisonDel, 0, strings.Length - 1);
            foreach (var str in strings)
            {
                Console.WriteLine(str);
            }

            Console.ReadKey();
        }
Example #4
0
        public static void SortingOfInputWords()
        {
            var comparison = new Сomparison(Sorting.СomparisonMethod);

            string[] inputArray = Input.InputArray();
            Console.WriteLine("\nYour words after sorting are:\n");
            Sorting.Sort(inputArray, comparison, 0, inputArray.Length - 1);
            foreach (var string_ in inputArray)
            {
                Console.WriteLine(string_);
            }

            Console.WriteLine("\n");
        }
Example #5
0
        public static void SortingOfFixedWords()
        {
            var comparison = new Сomparison(Sorting.СomparisonMethod);

            Console.WriteLine("\nOur fixed words are: ");
            foreach (string item in fixedArray)
            {
                Console.Write(item + " ");
            }

            Sorting.Sort(fixedArray, comparison, 0, fixedArray.Length - 1);
            Console.WriteLine("\nOur fixed words after sorting are:\n");
            foreach (var string_ in fixedArray)
            {
                Console.WriteLine(string_);
            }
        }
        private static void Merge(string[] strings, int left, int middle, int right, Сomparison compare)
        {
            int positionLeft  = left;
            int positionRight = middle + 1;
            int sizeTmp       = right - left + 1;
            var tmp           = new string[sizeTmp];
            int positionTmp   = 0;

            while (positionLeft <= middle && positionRight <= right)
            {
                if (compare(strings[positionLeft], strings[positionRight]))
                {
                    tmp[positionTmp] = strings[positionLeft];
                    positionLeft++;
                    positionTmp++;
                }
                else
                {
                    tmp[positionTmp] = strings[positionRight];
                    positionRight++;
                    positionTmp++;
                }
            }

            while (positionLeft <= middle)
            {
                tmp[positionTmp] = strings[positionLeft];
                positionLeft++;
                positionTmp++;
            }

            while (positionRight <= right)
            {
                tmp[positionTmp] = strings[positionRight];
                positionRight++;
                positionTmp++;
            }

            for (var i = 0; i < sizeTmp; i++)
            {
                strings[left + i] = tmp[i];
            }
        }
Example #7
0
        public static void Sort(string[] strings, Сomparison del, int first, int last) // заменил на быструю сортировку
        {
            int f = first, l = last;
            var mid = strings[(f + l) / 2];

            do
            {
                while (del(strings[f], mid))
                {
                    f++;
                }

                while (del(mid, strings[l]))
                {
                    l--;
                }

                if (f <= l)
                {
                    var count = strings[f];
                    strings[f] = strings[l];
                    strings[l] = count;
                    f++;
                    l--;
                }
            }while (f < l);
            if (first < l)
            {
                Sort(strings, del, first, l);
            }

            if (f < last)
            {
                Sort(strings, del, f, last);
            }
        }
 /// <summary>
 /// Сортирует массив строк с помощью указанного метода compare
 /// </summary>
 /// <param name="strings">Исходный массив строк</param>
 /// <param name="compare">Метод, выполняющий сравнение строк</param>
 public static void Sort(string[] strings, Сomparison compare)
 {
     MergeSort(strings, 0, strings.Length - 1, compare);
 }