1、演算法描述下面主要講直接插入排序
記得演算法導論裡面說過,插入排序就是很多人玩撲克時摸牌階段做的事,牌堆裡面的牌是沒有順序的,而手裡的牌是有序的,每次摸一張牌的時候都要找乙個位置插入,以保持手裡牌的有序。
操作步驟
(1)、從第乙個元素開始,該元素可以認為已經被排序
(2)、取出下乙個元素,在已經排序的元素序列中從後向前掃瞄
(3)、如果該元素(已排序)大於新元素,將該元素移到下一位置
(4)、重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
(5)、將新元素插入到下一位置中
(6)、重複步驟2
2、圖例
3、**
public void sort(int data)
} }
4、穩定性以及複雜度(1)穩定性:直接插入排序是穩定的排序
(2)複雜度:
平均 時間複雜度:o(n^2)
當需要排序的序列已經是上公升序列時,只需要比較n-1次,當需要排序的序列是下降序列時,需要比較n(n-1)/2次,並需要n-1次賦值
空間複雜度:o(1)
演算法基礎之排序篇 插入排序
1 演算法描述下面主要講直接插入排序 記得演算法導論裡面說過,插入排序就是很多人玩撲克時摸牌階段做的事,牌堆裡面的牌是沒有順序的,而手裡的牌是有序的,每次摸一張牌的時候都要找乙個位置插入,以保持手裡牌的有序。操作步驟 1 從第乙個元素開始,該元素可以認為已經被排序 2 取出下乙個元素,在已經排序的元...
演算法基礎之排序 插入排序
排序演算法是演算法基礎中最常見也是最應該掌握的演算法。插入排序的想法,和我們玩撲克牌起牌相似。從左手為空開始,撲克牌背面朝上至於桌上,每次從桌面上摸一張牌,並將其插入到左手正確的位置,使得左手中的牌是有序的。為了找到這張牌的正確插入位置,從右到左逐一比較左手中的牌。當摸完桌上的牌時,左手中的牌就是排...
演算法基礎 插入排序篇 直接插入排序
直接插入排序,是一種最簡單也是最直觀的插入排序演算法。直接插入排序演算法適用於基本有序的排序表和資料量不大的排序表 其思想是 假設陣列由有序部分和無序部分組成,前半部分為有序,後半部分為無序,假設有表 l n 在某一狀態存在如圖所示 則此時,需要將 l i 插入到陣列的有序部分,演算法為 將 l 0...