/// <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); } }
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)); }
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)); }
public void QuickSort_Null_ArgumentNullException() { Assert.ThrowsException <ArgumentNullException>( () => SortsHelper.QuickSort(null)); }
public void MergeSort_Null_ArgumentNullException() { Assert.ThrowsException <ArgumentNullException>( () => SortsHelper.MergerSort(null)); }