/// <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); }
/// <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)); }
/// <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); }
/// <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); }