#include <iostream> using namespace std; int main() { int arr[] = {0, 9, 1, 5, 8, 3, 7, 4, 6, 2}; int n = sizeof(arr) / sizeof(*arr); int i, j; int increment = n; do { increment = increment / 3 + 1; //增量序列 for(i=increment+1; i<n; i++) { if(arr[i]<arr[i-increment]) { //需将arr[i]插入有序增量子表 arr[0] = arr[i]; for(j=i-increment; j>0 && arr[0]<arr[j]; j-=increment) arr[j+increment] = arr[j]; //记录后移,查找插入位置 arr[j+increment] = arr[0]; //插入 } } } while(increment>1); for(i=1; i<n; i++) { cout << arr[i] << " "; } return 0; }