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