题目描述
给你10个数,设计一个程序,实现希尔插入排序算法,并输出这个序列的希尔排序过程。
输入
1行10个数,两个数之间有空格隔开,所有数均不超过10910^9109
输出
每个排序过程输出一行,直到排序完成。
输入输出样例
样例输入 #1
复制
9 8 7 6 5 4 3 2 1 0
样例输出 #1
复制
4 3 2 1 0 9 8 7 6 5
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
#include <iostream>
using namespace std;
int sign, j, i;
int main()
{
int arr[10];
for (int i = 0; i < 10; i++)
cin >> arr[i];
sign = 10 / 2;//分组点
while (sign > 0)
{
for (i = sign; i < 10; i++)
{
int temp;
temp = arr[i];
j = i - sign;
while (j >= 0 && temp < arr[j])
{
arr[j + sign] = arr[j];
j = j - sign;
}
arr[j + sign] = temp;
}
sign = sign / 2;
for (int i = 0; i < 10; i++)
cout << arr[i] << " ";
cout << endl;
}
return 0;
}