希尔排序:不稳定,时间复杂度 平均时间 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;
}