直接插入排序:
没有哨兵算法:
void InsertSort(int A[],int n){
int i,j,temp;
for(i=1;i<n;i++)
if(A[i]<A[i-1])
{
temp=A[i];
for(j=i-1;j>=0 && A[j]>temp;--j)
A[j+1]=A[j];
A[j+1]=temp;
}
}
带* 哨兵* 算法
void InsertSort(int A[],int n){
int i,j;
for(i=2;i<=n;i++)
if(A[i]<A[i-1])
{
A[0]=A[i];
for(j=i-1;A[0]<A[j];--j)
A[j+1]=A[j];
A[j+1]=A[0];
}
}
空间复杂度 O(1)
时间复杂度:最好情况 O(n)
最坏情况 O(n2)
算法稳定性:稳定