Je veux une fonction plus rapide pour trouver le Nème plus grand nombre d'un tableau Int en C #. Cette fonction prend N et Array et retourne l' index de ce nombre.
Voici ce que j'ai déjà. Il trie simplement le tableau puis retourne l'index de ce nombre. Cela fonctionne parfaitement mais je ne sais pas si c'est le moyen le plus rapide. il semble logique d'être un algorithme sans tri complet.
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];
}
quelques résultats:
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)