算法原理:
插入排序的原理和打扑克时抓牌的原理相同。我们会把抓到的牌进行排序,从抓到第二张牌开始,和已经抓到的牌比较大小,并把新抓的牌插入到相应的位置。下图出自算法导论的插入排序部分,演示了插入排序的整个过程:
算法伪代码:
INSERTION-SORT(A)
INSERTION-SORT(A)
for j=2 to A.length
key = A[j]//Insert A[j] into the sorted sequence A[1..j-1]i = j-1while(i>0 and A[j]>key)
A[i+1] = A[i]i=i-1A[i+1] = key
算法性能分析:
时间复杂度分析:最好的情况 O(n) 平均情况和最坏情况 O(n^2)
空间复杂度分析:O(1)
稳定性:稳定
Java版本代码实现:
private void insertionsort(int[] A)
{
for(int i=1;i<A.length;i++)
{
int key = A[i];
int j=i-1;
while(j>=0 && A[j]>key)
{
A[j+1] = A[j];
j--;
}
A[j+1] = key;
}
}