java - 请问描述中的排序叫什么名字。
PHPz
PHPz 2017-04-17 17:27:35
0
6
458
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可能導致溢出,另外一種不用中間變量的方式是採用異或:a=a^b ,b=a^b,a=a^b 這種方式不適合浮點數,總之,只是採用了不用任何額外的空間實現交換資料而已。 。 。重點還是在演算法本身。 。

迷茫

巢狀循環是插入排序的寫法,但是內層循環體卻跟插入排序不一樣。

大家讲道理

插入排序,第二層循環就是如果array[j-1]>array[j],交換array[j]和array[j-1]的值

阿神

插入排序

array[j] = array[j - 1] + array[j];
array[j - 1] = array[j] - array[j - 1];
array[j] = array[j] - array[j - 1];

這段程式碼就是交換的意思,不用中間變數

巴扎黑

插入排序。第二層循環內部是交換值的意思

左手右手慢动作

插入排序,第二層循環裡面那段程式碼,看著估計有點亂,但簡化一下看就相當於:

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

a = a – b;
*就是a和b的值交換的意思,看不明白可以代入具體數字去看看。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板