#include结语using namespace std; #define Maxsize 100 void ShellInsert(int r[],int n,int dk) { int i, j,k; for (i = dk + 1; i <= n; i++) { if (r[i] < r[i - dk]) { r[0] = r[i]; for (j = i - dk; j > 0 && r[j] > r[0]; j -= dk) r[j + dk] = r[j]; r[j + dk] = r[0]; } } for (k = 1; k <= n; k++) cout << r[k] << " "; cout << endl; } void ShelllSort(int r[], int n, int dt[], int t) { for (int k = 0; k < t; k++) { ShellInsert(r, n, dt[k]); } } int main() { int i, n, r[Maxsize+1]; int dt[3] = { 5,3,1 }; //这个增量序列可以自己设置 int t = 3; cout << "请输入数列中元素的个数n:" << endl; cin >> n; cout << "请依次输入数列中的元素:" << endl; for (i = 1; i <= n; i++) { cin >> r[i]; } ShelllSort(r, n, dt, t); return 0; }
非常简单的代码,可以改成c语言完全没问题;第一次写csdn,代码来源是趣学算法一书。



