1.簡介
插入排序(insertion sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到o(1)的額外空間的排序),因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。
2.演算法描述
一般來說,插入排序都採用in-place在陣列上實現。具體演算法描述如下:
1.從第乙個元素開始,該元素可以認為已經被排序
2.取出下乙個元素,在已經排序的元素序列中從後向前掃瞄
3.如果該元素(已排序)大於新元素,將該元素移到下一位置
4.重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
5.將新元素插入到該位置後
6.重複步驟2~5
如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的數目。該演算法可以認為是插入排序的乙個變種,稱為二分查詢排序。
3.使用插入排序為一列數字進行排序的過程
最差時間複雜度
最優時間複雜度
平均時間複雜度
c#**例項
/// /// 插入排序
///
public class insertionsorter
list[j] = t;}}
}
解析插入排序
先從一段 說起 package insert public class insertsort int array int array int array int array insertsort array,array.length public static void insertsort int...
3 插入排序(詳細)
目錄 sort類在選擇排序中的約定中 每次都將當前元素插入到左側已經排序的陣列中,使得插入之後左側陣列依然有序。插入排序的時間複雜度取決於陣列的初始順序,如果陣列已經部分有序了,那麼逆序較少,需要的交換次數也就較少,時間複雜度較低。public class insertion comparable ...
詳細解析直接插入排序和希爾排序
直接插入排序 1 基本思想 每一趟將乙個待排序的記錄,按其關鍵字的大小插入到已經排好序的一組記錄的適當位置上,直到所有待排序記錄全部插入為止。直接用乙個事例來解釋說明 給一無序的數列 49,38,65,97,76,13,27,49 對於這個進行直接插入排序,如圖 includevoid insert...