//希尔排序 o(nlogn) o(1) stable
void shell(int a[],int n)
{
int d = n / 2;//初始增量
while(d >= 1)
{
for(int i = d + 1;i < n;i ++)//起始点往后
{
int j = i - d,x = a[i];
while(j > 0 && a[j] > x)//以该增量 往前遍历 对比
{
a[j + d] = a[j];
j = j - d;
}
}
a[j + d] = x;//找到起始点 插入位置
d = d / 2;//缩小增量
}
return;
}
希尔排序主要代码o(nlogn) o(1) stable
最新推荐文章于 2024-05-21 23:16:53 发布