示例#1
0
        /// <summary>
        /// Sorts input based on <see cref="SortingTypes"/> and <see cref="ISortingAlgorithmFactory"/>
        /// </summary>
        /// <param name="sort">ISort</param>
        /// <param name="sortingAlgorithmFactory"><see cref="ISortingAlgorithmFactory"/></param>
        /// <param name="sortingTypes"><see cref="SortingTypes"/></param>
        /// <param name="input">input</param>
        /// <param name="comparer"><see cref="IComparer{T}"/></param>
        /// <returns>sorted input</returns>
        internal static string Sort(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, SortingTypes sortingTypes, string input, IComparer <char> comparer = null)
        {
            if (string.IsNullOrEmpty(input) || string.IsNullOrWhiteSpace(input))
            {
                return(input);
            }

            var charArray = input.ToCharArray();
            var sorter    = sortingAlgorithmFactory.Get <char>(sortingTypes, comparer != null ? comparer : new AsciiValueComparer());

            sorter.Sort(charArray);
            input = new string(charArray);
            return(input);
        }
示例#2
0
 /// <summary>
 /// Sorts input in ascending order using Insertion sort technique
 /// </summary>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 /// <returns>The ascending ordered content</returns>
 public static string UseInsertion(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, string input, IComparer <char> comparer = null)
 {
     return(sort.Sort(sortingAlgorithmFactory, SortingTypes.Insertion, input, comparer));
 }
示例#3
0
 /// <summary>
 /// Sorts input in ascending order using Insertion sort technique
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 public static void UseInsertion <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, T[] input, IComparer <T> comparer)
 {
     sort.Sort <T>(sortingAlgorithmFactory, SortingTypes.Insertion, input, comparer);
 }
 /// <summary>
 /// Sorts input in ascending order using Shell sort technique
 /// </summary>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 /// <returns>The ascending ordered content</returns>
 public static string UseShell(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, string input, IComparer <char> comparer = null)
 {
     return(sort.Sort(sortingAlgorithmFactory, SortingTypes.Bubble, input, comparer));
 }
 /// <summary>
 /// Sorts input in ascending order using Shell sort technique
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 public static void UseShell <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, T[] input, IComparer <T> comparer)
 {
     sort.Sort <T>(sortingAlgorithmFactory, SortingTypes.Bubble, input, comparer);
 }
示例#6
0
        /// <summary>
        /// Sorts input based on the <see cref="SortingTypes"/> and <see cref="ISortingAlgorithmFactory"/>
        /// </summary>
        /// <typeparam name="T">Type of input</typeparam>
        /// <param name="sort">ISort</param>
        /// <param name="sortingAlgorithmFactory"><see cref="ISortingAlgorithmFactory"/></param>
        /// <param name="sortingTypes"><see cref="SortingTypes"/></param>
        /// <param name="input">input</param>
        /// <param name="comparer"><see cref="IComparer{T}"/></param>
        internal static void Sort <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, SortingTypes sortingTypes, T[] input, IComparer <T> comparer)
        {
            var sorter = sortingAlgorithmFactory.Get <T>(sortingTypes, comparer);

            sorter.Sort(input);
        }
 /// <summary>
 /// Sorts input in ascending order using Quick sort (Last element as Pivot) technique
 /// </summary>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 /// <returns>The ascending ordered content</returns>
 public static string UseQuickLastPivot(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, string input, IComparer <char> comparer = null)
 {
     return(sort.Sort(sortingAlgorithmFactory, SortingTypes.Quick_LastPivot, input, comparer));
 }
 /// <summary>
 /// Sorts input in ascending order using Quick sort (Last element as Pivot) technique
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 public static void UseQuickLastPivot <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, T[] input, IComparer <T> comparer)
 {
     sort.Sort <T>(sortingAlgorithmFactory, SortingTypes.Quick_LastPivot, input, comparer);
 }
 /// <summary>
 /// Sorts input in ascending order using Cocktail sort technique
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 public static void UseCocktail <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, T[] input, IComparer <T> comparer)
 {
     sort.Sort <T>(sortingAlgorithmFactory, SortingTypes.Cocktail, input, comparer);
 }
 /// <summary>
 /// Sorts input in ascending order using Pancake sort technique
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 public static void UsePancake <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, T[] input, IComparer <T> comparer)
 {
     sort.Sort <T>(sortingAlgorithmFactory, SortingTypes.Pancake, input, comparer);
 }
 /// <summary>
 /// Sorts input in ascending order using Bitonic sort technique
 /// This will work only if the input size is power of 2
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="sort">ISort</param>
 /// <param name="sortingAlgorithmFactory">Sorting algorithm factory</param>
 /// <param name="input">input data</param>
 /// <param name="comparer">Comparer must returns '1' if the first element is greater than next</param>
 public static void UseBitonic <T>(this ISorting sort, ISortingAlgorithmFactory sortingAlgorithmFactory, T[] input, IComparer <T> comparer)
 {
     sort.Sort <T>(sortingAlgorithmFactory, SortingTypes.Bitonic, input, comparer);
 }