#include <iostream> #include <cmath> using namespace std; int main(){ int n; cin>>n; int a[n+5]; for(int i = 0;i<n;i++){ cin>>a[i]; } for(double i = n;i>1;){ i=round(i/2); for(int j=0;j+i<n;j++){ if(a[j]>a[j+(int)i]){ swap(a[j],a[j+(int)i]); } } } for(int i = 0;i<n;i++){ cout<<a[i]<<endl; } return 0; }
基本思想:
将i设为输入序列的项数,每次除以2(i为差值)(double类型四舍五入)。
每次将j=0,将序列的第j项与序列的第j+i项比较进行交换,直到i为1。
标签:include,int,double,希尔,序列,排序 From: https://www.cnblogs.com/wangyihang-xh/p/18147217