/**
*
* Althor: Hacker Hao
* Create: 2023.12.19
*
*/
#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 200
const int N = 1e5 + 10;
int n;
int q[N];
void ShellSort(int a[], int n)
{
int gap = n;
while (gap > 1)
{
gap = gap / 3 + 1; //缩小增量
int i = 0;
for (i = 0; i < n - gap; i++) //遍历
{
int end = i;
int temp = a[end + gap]; //用于交换的临时变量
while (end >= 0)
{
if (a[end] > temp)
{
a[end + gap] = a[end];
end -= gap;
}
else
break;
}
a[end + gap] = temp; //end+gap为插入位置
}
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++) cin >> q[i];
ShellSort(q, n);
for (int i = 0; i < n; i++) cout << q[i] << " ";
return 0;
}
C/C++: 希尔排序
最新推荐文章于 2024-10-08 19:34:10 发布