/// <summary>
        /// Метод Sort сортирует коллекцию элементов, за время:
        /// лучшое: O(n^2),
        /// в среднем: O(n^2),
        /// в худшем: O(n^2).
        /// </summary>
        /// <typeparam name="T">Строготипизированный параметер метода, указывающий тип элементов коллекции</typeparam>
        /// <param name="list">Коллекция элементов</param>
        /// <returns>Возращает отсортированную коллекцию элементов</returns>
        public static IEnumerable <T> Sort <T>(this IEnumerable <T> list) where T : IComparable <T>
        {
            if (!list.Any())
            {
                return(Enumerable.Empty <T>());
            }
            IEnumerable <T> first = list.Where((item, j) => BooleanFunctions <T, T, Boolean> .Equals(list.ElementAt(j + 1), list.ElementAt(j))).Select(y => y).Sort();
            IEnumerable <T> a     = from item in list
                                    let minValue = list.Min()
                                                   let minIndex = Array.FindIndex(list.ToArray(), x => BooleanFunctions <T, T, Boolean> .Equals(x, minValue))
                                                                  where BooleanFunctions <T, Int32, Boolean> .Less(list.ToArray()[minIndex + 1], minIndex)

                                                                  orderby item
                                                                  select item;

            return(first);
        }
 /// <summary>
 /// Перегрузка операции "равно"
 /// </summary>
 /// <param name="left">Левый операнд</param>
 /// <param name="right">Правый операнд</param>
 /// <returns>Возращает true или false</returns>
 public static Boolean operator ==(BinarySystem <Type> left, BinarySystem <Type> right) =>
 BooleanFunctions <Int32, Int32, Boolean> .Equals(Hash(left), Hash(right));