通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應的位置並插入。 插入排序非常類似於整撲克牌。在開始摸牌時,左手是空的,牌面朝下放在桌上。接著,一次從 桌上摸起一張牌,並將它插入到左手一把牌中的正確位置上。為了找到這張牌的正確位置,要將 它與手中已有的牌從右到左地進行比較。無論什麼時候,左手中的牌都是排好序的。
如果輸入陣列已經是排好序的話,插入排序出現最佳情況,其執行時間是輸入規模的乙個線性函 數。如果輸入陣列是逆序排列的,將出現最壞情況。平均情況與最壞情況一樣,其時間代價是(n2
public
class
insertsort
; insertsort.
sort
(arr)
; system.out.
println
(arrays.
tostring
(arr));
arr =
newint
; arrays.
sort
(arr)
; system.out.
println
(arrays.
tostring
(arr));
}public
void
sort
(int
arr)
}private
void
sortd
(int vi,
int j)
else}}
private
intcomp
(int vi,
int vj)
else
if(vi > vj)
else
}}
插入排序演算法
插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...
演算法 插入排序
include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...
插入排序演算法
下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...