Maison > Questions et réponses > le corps du texte
int[] array = { 4, 7, 1, 5, 2, 6 };
for (int i = 0; i < array.length; i++)
{
for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
{
array[j] = array[j - 1] + array[j];
array[j - 1] = array[j] - array[j - 1];
array[j] = array[j] - array[j - 1];
}
}
黄舟2017-04-17 17:29:35
Tri par insertion, l'échange ci-dessus n'utilise pas de variables intermédiaires, mais il y a aussi un problème, il peut y avoir un débordement, car a=a b peut provoquer un débordement. Une autre façon sans variables intermédiaires est d'utiliser XOR : a=a. ^b,b=a^b,a=a^b Cette méthode ne convient pas aux nombres à virgule flottante. En bref, elle est simplement utilisée pour échanger des données sans espace supplémentaire. . . L’accent est toujours mis sur l’algorithme lui-même. .
迷茫2017-04-17 17:29:35
Les boucles imbriquées sont écrites en tri par insertion, mais le corps de la boucle interne est différent du tri par insertion.
大家讲道理2017-04-17 17:29:35
Tri par insertion, le deuxième niveau de boucle est si array[j-1]>array[j], échangez les valeurs de array[j] et array[j-1]
阿神2017-04-17 17:29:35
Tri par insertion
array[j] = array[j - 1] + array[j];
array[j - 1] = array[j] - array[j - 1];
array[j] = array[j] - array[j - 1];
Ce code signifie échange, aucune variable intermédiaire n'est nécessaire
巴扎黑2017-04-17 17:29:35
Tri par insertion. L'intérieur de la boucle de deuxième niveau signifie échanger des valeurs
ringa_lee2017-04-17 17:29:35
Tri par insertion, le code dans la boucle de deuxième niveau peut paraître un peu brouillon, mais s'il est simplifié, il équivaut à :
a = a b;
b = a – b;
a = a – b;
* signifie l'échange des valeurs de a et b. Si vous ne comprenez pas, vous pouvez remplacer les nombres spécifiques pour voir.