java - 请问描述中的排序叫什么名字。
PHPz
PHPz 2017-04-17 17:27:35
0
6
451
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];
    }
}
PHPz
PHPz

学习是最好的投资!

répondre à tous(6)
黄舟

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. .

迷茫

Les boucles imbriquées sont écrites en tri par insertion, mais le corps de la boucle interne est différent du tri par insertion.

大家讲道理

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]

阿神

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

巴扎黑

Tri par insertion. L'intérieur de la boucle de deuxième niveau signifie échanger des valeurs

左手右手慢动作

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal