從第乙個元素開始,該元素可以認為已經被排序
取出下乙個元素,在已經排序的元素序列中從後向前掃瞄
如果該元素(已排序)大於新元素,將該元素移到下一位置
重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
將新元素插入到該位置後
重複步驟2~5
考慮如下陣列:
int table =;
第乙個元素認為是第乙個有序的序列,這樣陣列分成了兩部分
;//有序
;//無序
選出無序序列的第乙個元素,插入到有序序列裡去。
這裡我們取出:3
將新元素插入到該位置後。
得到新的有序序列和無序序列如下:
;//有序
;//無序
重複第二~四步
void insertsort(int
array,int n)
else
}if(j != i-1)
array[j+1] = temp;
}}
穩定
資料量小,比較靠譜,太多了,還要優化。
在找插入位置時可以使用二分法。
插入排序 直接插入排序
直接插入排序演算法思想 將整個資料表分成左右兩個子表,其中左子表為有序表,右子表為無序表 整個排序過程就是將右子表中的元素逐個插入到左子表中,直到右子表為空,而左子表成為新的有序表。演算法過程分析 將待排序的元素存放在陣列r n 1 中,在初始狀態下,r 0 為監視哨,r 1 為有序區,r 2 r ...
插入排序 直接插入排序
一.插入排序的基本思想 將乙個記錄插入已排序好的有序表中,從而得到乙個新的記錄數加1的有序表。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。所謂的哨兵,就是即將插入的記錄。二.示例 如果碰見相等的元素,會被插到後面,所以,相等元素的前後順序沒有改變,插入排序是穩定的。三.演算法實現 public ...
插入排序 直接插入排序
直接插入排序的基本思想 將乙個記錄插入到已排序好的有序表中,然後得到乙個新記錄數增1的有序表。也就是 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒...