#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;
}
常用排序算法——希爾排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.