前言
每日代码
提示:以下是本篇文章正文内容,下面案例可供参考
一、shell
1.不稳定排序
2.空间复杂度o(1)
3.时间复杂度约为o(n1.3),最坏情况o(n2)
4.仅适用于线性表为顺序存储情况,需要随机访问的特性
代码如下(示例):
void ShellSort(int a[], int n) //递增
{
int i, j, d;
for (d = n / 2; d >= 1; d /= 2) //步长变化
{
for (i = d + 1; i <= n; i++)
{
if (a[i] < a[i - d])
{
a[0] = a[i]; //a[0]不是哨兵,仅代表空出一个供交换的位置
for (j = i - d; j > 0 && a[j] > a[0]; j -= d)
{
a[j + d] = a[j];
}
a[j + d] = a[0]; //插入过一遍后的最小数据
}
}
}
}
附加一个简单插入排序
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[j]>a[0];--j)
{
a[j+1]=a[j];
}
a[j+1]=a[0];
}
}
}
总结
希尔排序属于插入排序.