Пример #1
0
        /// <summary>
        /// Finds the bigger closest number from the input
        /// </summary>
        /// <param name="number"></param>
        /// <returns>Filtered an int</returns>
        public static int FindNextBiggerNumber(int number)
        {
            if (number < 0)
            {
                throw new ArgumentException($"{nameof(number)} should be possitive num");
            }

            if (number < 11)
            {
                return(-1);
            }

            string numberStr = Convert.ToString(number);

            int[] arrDigits = new int[numberStr.Length];

            for (int si = 0; si < numberStr.Length; si++)
            {
                arrDigits[si] = int.Parse(numberStr[si].ToString());
            }

            var hasFound        = false;
            var i               = 0;
            var indexStartPoint = arrDigits.Length - 1;
            var indexFindNumber = 0;

            while (!hasFound && i < arrDigits.Length - 1)
            {
                for (int k = indexStartPoint; k >= indexStartPoint - i; k--)
                {
                    if (arrDigits[k] <= arrDigits[indexStartPoint - i - 1])
                    {
                        continue;
                    }
                    int temp = arrDigits[k];
                    arrDigits[k] = arrDigits[indexStartPoint - i - 1];
                    arrDigits[indexStartPoint - i - 1] = temp;
                    indexFindNumber = indexStartPoint - i;
                    hasFound        = true;
                    break;
                }

                i++;
            }

            if (hasFound)
            {
                if (indexFindNumber != arrDigits.Length - 1)
                {
                    SortsHelper.QuickSort(arrDigits, indexFindNumber, arrDigits.Length - 1);
                }

                return(Convert.ToInt32(string.Concat(arrDigits)));
            }
            else
            {
                return(-1);
            }
        }
Пример #2
0
        public void QuickSort_InputCorrectValues_SortedArrayReturned()
        {
            //Arrange
            int[] arrayGoal  = new int[] { 1, 2, 3, 4, 5, 6 };
            int[] arrayInput = new int[] { 1, 4, 3, 5, 6, 2 };

            //Act
            SortsHelper.QuickSort(arrayInput);

            //Assert
            Assert.IsTrue(arrayGoal.SequenceEqual(arrayInput));
        }
Пример #3
0
        public void MegreSort_InputCorrectValues_SortedArrayReturned()
        {
            //Arrange
            int[] arrExpected = new int[] { 1, 2, 3, 4, 5, 6 };
            int[] arrInput    = new int[] { 1, 4, 3, 5, 6, 2 };

            //Act
            arrInput = SortsHelper.MergerSort(arrInput);

            //Assert
            Assert.IsTrue(arrExpected.SequenceEqual(arrInput));
        }
Пример #4
0
 public void QuickSort_Null_ArgumentNullException()
 {
     Assert.ThrowsException <ArgumentNullException>(
         () => SortsHelper.QuickSort(null));
 }
Пример #5
0
 public void MergeSort_Null_ArgumentNullException()
 {
     Assert.ThrowsException <ArgumentNullException>(
         () => SortsHelper.MergerSort(null));
 }