J'ai une brève question: Je sais que la complexité des deux extraits est la même. Pourtant, je veux savoir lequel est relativement meilleur et pourquoi? Voici le code de tri de sélection:Efficacité de l'échange d'éléments de tableau par rapport aux indices de tableau
C'est ce que je l'ai écrit:
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j <= n - 1; j++)
{
if (a[j] < a[i])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
C'est ce que mon ami a écrit:
for (int i = 0; i < n - 1; i++)
{
int iMin = i;
for (int j = i + 1; j <= n - 1; j++)
{
if (a[j] < a[i])
{
iMin = j;
}
int temp = a[i];
a[i] = a[iMin];
a[iMin] = temp;
}
}
Si vous avez deux chevaux et que vous voulez savoir pourquoi on est plus rapide, pourquoi ne courez-vous pas vous-même les chevaux? Pourquoi nous demandez-vous de vous dire lequel est le plus rapide? –
Il ne s'agit pas de savoir qui est le plus rapide. Je ne lui ai pas encore demandé, mais j'essaie simplement de comprendre s'il y a une explication logique à ne pas échanger des éléments directement dans le bloc. Est-ce juste une bonne technique de programmation ou est-ce une question d'efficacité? –
Il peut ne pas faire beaucoup de différence réelle, mais le premier est nettement meilleur. –