希尔排序:不稳定,时间复杂度 平均时间 O(nlogn) 最差时间O(n^s) 1<s<2
具体实现思路如图:

实现代码如下:
void swap(int *a, int* b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void ShellSort(int *a, int len)
{
if (len <= 1)
{
return;
}
int gap=len/2;
for (; gap >=1; gap = gap / 2)
{
int i = 0;
for (; i < len/gap; i++)
{
for (int j = i + gap; j < len; j=j+gap)
{
if (a[i]>a[j])
{
swap(&a[i], &a[j]);
}
else
{
break;
}
}
}
}
}
int main()
{
int a[5] = { 5, 3, 4, 2, 1 };
ShellSort(a, (sizeof(a) / sizeof(a[0])));
for (int i = 0; i < 5; i++)
{
printf("%d", a[i]);
}
system("pause");
return 0;
}

本文详细介绍了希尔排序算法,一种不稳定的排序方法,其平均时间复杂度为O(nlogn),最差情况下时间复杂度可达O(n^s),1<s<2。文章通过具体的实现思路和示例代码展示了希尔排序的工作原理及步骤。
6042

被折叠的 条评论
为什么被折叠?



