Description
给出一个数据序列,使用希尔排序算法进行降序排序。
间隔gap使用序列长度循环除2直到1
Input
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
Output
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
Sample
#0
Input
2 6 111 22 6 444 333 55 8 77 555 33 1 444 77 666 2222
Output
444 333 55 111 22 6 444 333 111 55 22 6 444 555 666 2222 77 77 33 1 666 2222 444 555 77 77 33 1 2222 666 555 444 77 77 33 1
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
int* num = new int[n];
for (int i = 0; i < n; i++)
cin >> num[i];
int gap = n / 2;
while (gap)
{
for (int i = 0; i < n-gap; i++)
{
int j = i;
while (j < n)
j += gap;
for (; j >= 0; j -= gap)
{
for (int k = i; k < j-gap; k += gap)
{
if (num[k] < num[k + gap])
{
int temp = num[k];
num[k] = num[k + gap];
num[k + gap] = temp;
}
}
}
}
for (int i = 0; i < n; i++)
cout << num[i] << " ";
cout << endl;
gap /= 2;
}
cout << endl;
}
return 0;
}