插入排序和選擇排序一樣,當前索引左邊的元素都是有序的。但是它們最終的位置還是不確定。為了給最小元素空出位置,它們可能會被移動。但是當前索引到達最右邊的時候,整個排序就完成了。
和選擇排序不一樣的是,插入排序取決於輸入中元素的初始順序。例如,對乙個很大的且其中元素已經有序的陣列進行排序會比對隨機順序的陣列或者是逆序陣列進行排序要快得多。以下是演算法實現。
public class insertion從中我們可以看出,插入排序的時間複雜度是取決於輸入陣列的初始,如果輸入的陣列已經有序,那麼插入排序的事件複雜度是o(n),如果是逆序排列,時間複雜度是o(n2),這是兩種極端情況,平均來說,該演算法的事件複雜度介於n~n2之間。空間複雜度為o(1).public static void exch(comparable a,int i,int j)
public static void sort(comparable a)}}
}
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
本節主要分析插入排序演算法的直接插入排序和希爾 shell 排序 又稱縮小增量排序 1.直接插入排序 該排序是最簡單的排序方法,其基本思想是 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1....