Java工程師的第四天——插入排序(2)

 

實現插入的思路:利用交換;將待插入的數逐一和已經排好序的數進行比較,每比較一次,若已排序好的數較大,則交換兩個數的位置,最後就能交換到正確的位置上。spa

代碼:排序

for(int i =1;i<5;i++){class

    j=i;變量

    while(a[j]<a[j-1] && j>0){    //將待插入的數,一 一和已排序的數進行比較;di

            temp = a[j];                    //而後交換位置,最後就能交換到正確的位置上while

            a[i] = a[j-1];                      //舉例:1,3,4,2    設2是當前待插入的數,則序列轉化以下co

            a[j-1] = temp;                  //1,3,2,4 ;    1,2,3,4background

             j--;    //保證了j的值,與待插入元素的下標一致;繼而能夠與前一個數進行比較              

      }

}

 

與插入排序(1)進行比較

(1)中實現插入的思路:

利用臨時變量,先將待插入的數保存起來;而後再用臨時變量和已經排序好的數逐一比較,每比較一次,若已排序好的數較大,則將已排序好的數向後移一位;最後可得待插入的數要插入的位置;

總之(1)是先比較,再移位,最後找到要插入的位置和(2)中邊比較,邊交換,最後直接落到正確的插入位置上略有不一樣

代碼:

for(int i =1;i<5;i++){

    temp = a[i];//保存待插入的數

    j = i;

    while(temp < a[j-1] && j>0){        //舉例  3,4,2    2 是待插入的數

        a[j] = a[j-1];

        j--;//j--後就是temp欲插入的位置

    }

    a[j] = temp;

}

相關文章
相關標籤/搜索