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

学习是最好的投资!

全員に返信(6)
黄舟

挿入ソート、上記の交換は中間変数を使用しませんが、a=a+b がオーバーフローを引き起こす可能性があるという問題もあります。中間変数を使用しない別の方法は、XOR を使用することです: a=a。 ^b,b=a^b,a=a^b このメソッドは、浮動小数点数には適していません。つまり、追加のスペースなしでデータを交換するためにのみ使用されます。 。 。焦点は依然としてアルゴリズム自体にあります。 。

いいねを押す +0
迷茫

ネストされたループは挿入ソートで記述されますが、内側のループ本体は挿入ソートとは異なります。

いいねを押す +0
大家讲道理

挿入ソート、ループの第 2 レベルは、array[j-1]>array[j] の場合、array[j] と array[j-1] の値を交換します

いいねを押す +0
阿神

挿入ソート

リーリー

このコードは交換を意味し、中間変数は必要ありません

いいねを押す +0
巴扎黑

挿入ソート。第 2 レベルのループ内は値の交換を意味します

いいねを押す +0
左手右手慢动作

挿入ソート。第 2 レベルのループのコードは少し乱雑に見えるかもしれませんが、単純化すると次と同等です。

a = a + b;
b = a – b;

a = a – b;
* は、a と b の値の交換を意味します。理解できない場合は、具体的な数字を置き換えて確認できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート