希尔排序是要分组插入排序,而后,统一起来进行排序。
所以,那个决定分组的间距要不断缩短。
在代码中,d即为间距。
#include <iostream>
using namespace std;
void SellSort(int a[], int M)
{
int i,j,d;
int tmp;
for(d = M/2 ; d >= 1; d /= 2) //对记录分组排序
{
for( i = d; i <= M; i++) //对每一组记录排序
{
tmp = a[i];
for(j = i - d; j >= 0 && tmp < a[j]; j -= d)
a[j+d] = a[j];
a[j+d] = tmp;
}
}
for(int ii = 0; ii < M; ii++)
cout << a[ii] << endl;
}
void main()
{
cout << "请输入十个数" << endl;
int ForSort[10];
for (int ii = 0; ii < 10; ii++)
{
cin >