插入排序(insertsort)
插入排序通過把序列中的值插入乙個已經排序好的序列中,直到該序列的結束。插入排序是對氣泡排序的改進。它比氣泡排序快2倍。一般不用在資料大於1000的場合下使用插入排序,或者重複排序超過200資料項的序列。
1、思想
每次選擇乙個元素k插入到之前已排好序的部分a[1…i]中,插入過程中k依次由後向前與a[1…i]中的元素進行比較。若發現發現a[x]>=k,則將k插入到a[x]的後面,插入前需要移動元素
2、演算法時間複雜度
最好的情況下:正序有序(從小到大),這樣只需要比較n次,不需要移動。因此時間複雜度為o(n)
最壞的情況下:逆序有序,這樣每乙個元素就需要比較n次,共有n個元素,因此實際複雜度為o(n2)
平均情況下:o(n2)
3、穩定性
插入排序是穩定的
4、實現
public static void insertsort(int data , int low ,int high)
data[j+1] = temp;
}
JAVA實現插入排序
一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新元素插入到該位...
插入排序 Java實現
插入排序,顧名思義就是將乙個數插入到一組已經生成的有序陣列當中,使之成為一組新的有序陣列。那麼我們考慮存在一組陣列,首先將p1插入到陣列中,使之成為有序陣列 接著將p2插入到陣列中,使之成為有序陣列.最後將pn插入到陣列中,使之成為有序陣列,這個有序陣列也就是我們最後的結果。附上 和實驗結果 pub...
java實現插入排序
通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應的位置並插入。插入排序非常類似於整撲克牌。在開始摸牌時,左手是空的,牌面朝下放在桌上。接著,一次從桌上摸起一張牌,並將它插入到左手一把牌中的正確位置上。為了找到這張牌的正確位置,要將它與手中已有的牌從右到左地進行比較。無論什麼時候...