private static int FindMinElementIndex <T>(T[] arr, int startIndex, int endIndex) where T : IComparable <T> { Debug.Assert(0 <= startIndex && startIndex < arr.Length, "Starting index was out of the array boundaries."); Debug.Assert(0 <= endIndex && endIndex < arr.Length, "End index was out of the array boundaries."); Debug.Assert(startIndex <= endIndex, "Starting index was larger than end index"); int minElementIndex = startIndex; for (int i = startIndex + 1; i <= endIndex; i++) { if (arr[i].CompareTo(arr[minElementIndex]) < 0) { minElementIndex = i; } } Debug.Assert(AssertionUtilities.IsMinElementIn(arr[minElementIndex], arr, startIndex, endIndex), "The result of find minimal element index was not the minimal element index"); return(minElementIndex); }