插入排序:
时间复杂度O(n2),空间复杂度O(1),稳定。
代码:
void InsertSort(int a[],int n)
{
int i,j;
int temp;
for(i=1;i<n;i++)
{
temp=a[i];
for(j=i; j>0 && a[j-1] > temp;j--)
a[j]=a[j-1];
a[j]=temp;
}
}
希尔排序:
代码:
void ShellSort(int a[],int n)
{
int i,j,Increment;
int temp;
for(Increment=n/2;Increment>0;Increment/=2)
for(i=Increment;i<n;i++)
{
temp=a[i];
for(j=i;temp < a[j-Increment] && j>=Increment;j-=Increment)
a[j]=a[j-Increment];
a[j]=temp;
}
}
//比插入排序多了一层增量的循环,循环的步长也有变化。