Я хочу, чтобы более быстрая функция находила N-е наибольшее количество массива Int в С#. Эта функция принимает N и Array и возвращает индекс этого числа.
Вот что у меня уже есть. Он просто сортирует массив и затем возвращает индекс этого числа. Он отлично работает, но я не уверен, что это самый быстрый способ. логичным представляется алгоритм без полной сортировки.
static int myFunction(int[] array, int N){
int[] indexes = new int[array.Length];
for (int i = 0; i < indexes.Length; i++)
indexes[i] = i;
for (int i = 0; i < array.Length; i++)
{
for (int j = i + 1; j < array.Length; j++)
{
if (array[i] < array[j])
{
int m = array[j];
array[j] = array[i];
array[i] = m;
m = indexes[j];
indexes[j] = indexes[i];
indexes[i] = m;
}
}
}
return indexes[N];
}
некоторые результаты:
myFunction(new int[] { 1, 3, 2, 0, 10 }, 0); //returns 4 (index of 10)
myFunction(new int[] { 1, 3, 2, 0, 10 }, 1); //returns 1 (index of 3)
myFunction(new int[] { 1, 3, 2, 0, 10 }, 2); //returns 2 (index of 2)