#include <iostream>
using namespace std;
template <class T>
void shell_sort(T *a, int n)
{
int j, gap;
for (gap = n / 2; gap > 0; gap /= 2)
{
//从数组第gap个元素开始
for (j = gap; j < n; j++)
{
//每个元素与自己组内的数据进行直接插入排序
if (a[j] < a[j - gap])
{
T temp = a[j];
int k = j - gap;
while (k >= 0 && a[k] > temp)
{
a[k + gap] = a[k];
k -= gap;
}
a[k + gap] = temp;
}
}
}
}
int main()
{
int size;
cin >> size;
int *arr = new int[size];
for(int i = 0; i < size; ++ i)
cin >> *(arr+i);
shell_sort(arr, size);
for(int i = 0; i < size; ++ i)
cout << *(arr + i) << " ";
cout << endl;
}
常用排序算法——希尔排序
最新推荐文章于 2021-04-10 16:47:00 发布