最近在找工作,复习相关知识,平时有什么问题在博客里都能找到,那我也准备把学到的知识记录在这里,可能还能顺便帮助到别人。第一次写,见谅!
希尔排序
C语言代码
函数可以直接复制运行
/**************希尔排序***************/
int sheller()
{
int a[6]={2,31,5,48,7,100};int n,j=0,i=0,tem,k,len;
n=sizeof(a)/sizeof(int);//计算数组长度
for(len=n/2;len>0;len=len/2)
{
for(i=0;i<len;i++)
{
for(j=i+len;j<n;j=j+len)
{
if(a[j]<a[j-len])
{
tem=a[j];
k=j-len;
while(k>=0&&tem<a[k])
{
a[k+len]=a[k];
k=k-len;
}
a[k+len]=tem;
}
}
}
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
}
时间、空间复杂度
不稳定排序
平均时间复杂度 | O(n^1.3 ) |
---|---|
最好时间复杂度 | O(n) |
最差时间复杂度 | O(n^2) |
空间复杂度 | O(1 ) |