У меня есть алгоритм для поиска n-го наименьшего элемента, но этот алгоритм работает не так быстро, как я хочу.Как я могу обновить этот алгоритм?Этот алгоритм принимает несортированный список, начальный индекс, конечный индекс и n-й элемент, который вы хотите найти.
public static void NthElement<T>(List<T> list, int startIndex, int nthSmallest,
int endIndex)
{
while (startIndex < endIndex)
{
int left = startIndex;
int right = endIndex;
T mid = list[(left + right) / 2];
while (left < right)
{
if (Comparer<T>.Default.Compare(list[left], mid) > -1)
{
T tmp = list[right];
list[right] = list[left];
list[left] = tmp;
right--;
}
else
{
left++;
}
}
if (Comparer<T>.Default.Compare(list[left], mid) > 0)
{
left--;
}
if (nthSmallest <= left)
{
endIndex = left;
}
else
{
startIndex = left + 1;
}
}
}