Rumah > Soal Jawab > teks badan
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
Isihan sisipan, pertukaran di atas tidak menggunakan pembolehubah perantaraan, tetapi terdapat juga masalah, mungkin terdapat limpahan, kerana a=a b boleh menyebabkan limpahan satu lagi cara tanpa pembolehubah perantaraan ialah menggunakan XOR: a=a ^b,b=a^b,a=a^b Kaedah ini tidak sesuai untuk nombor titik terapung Secara ringkasnya, ia hanya digunakan untuk menukar data tanpa sebarang ruang tambahan. . . Fokus masih pada algoritma itu sendiri. .
迷茫2017-04-17 17:29:35
Gelung bersarang ditulis dalam isihan sisipan, tetapi badan gelung dalam berbeza daripada isihan sisipan.
大家讲道理2017-04-17 17:29:35
Isih sisipan, peringkat kedua gelung ialah jika tatasusunan[j-1]>tatasusunan[j], tukar nilai tatasusunan[j] dan tatasusunan[j-1]
阿神2017-04-17 17:29:35
Isihan sisipan
array[j] = array[j - 1] + array[j];
array[j - 1] = array[j] - array[j - 1];
array[j] = array[j] - array[j - 1];
Kod ini bermaksud pertukaran, tiada pembolehubah perantaraan diperlukan
巴扎黑2017-04-17 17:29:35
Isihan sisipan. Bahagian dalam gelung peringkat kedua bermaksud menukar nilai
ringa_lee2017-04-17 17:29:35
Isih sisipan, kod dalam gelung tahap kedua mungkin kelihatan agak kemas, tetapi jika dipermudahkan ia bersamaan dengan:
a = a b;
b = a – b;
a = a – b;
* bermaksud pertukaran nilai a dan b Jika anda tidak faham, anda boleh menggantikan nombor tertentu untuk dilihat.