#include<iostream.h>
void swap( int &x, int &y )
{
int temp;
temp = x;
x = y;
y = temp;
}
void shellSort( int *a, int gap, int size )
{
int i = 0;
int j = 0;
while( gap > 0 )
{
//从第gap个元素开始做交换操作
//i 是从第gap位开始。和前面第i - gap位比较
for( i = gap; i < size; i++ )
{
if( a[i] < a[i-gap]) //和在他前面gap位的元素比较,
{
找到第i个元素应该插入的位置
for( int j = i - gap; ( j > 0&&a[i] < a[j] ); j -= gap )
{
swap(a[i],a[j]);
}
}
}
gap /=2;
}
}
int main()
{
int a[] = {49,38,65,97,76,13,27,49,55,4};
for( int i = 1; i < 10; i++ )
{
cout << a[i] << endl;
}
shellSort( a, 5, 10 );
cout << "after sort:" << endl;
for( i = 1; i < 10; i++ )
{
cout << a[i] << endl;
}
}