sessionStorage不能跨標籤頁解決方案 未驗證
阿新 • • 發佈:2020-11-25
希爾排序
網上都講的很清楚了QAQ,所以直接貼俺的程式碼了QwQ
思路:gap=>排序=>gap=>排序
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,a[N]; void shell(int gap) { if(gap<=0) return; for(int i=1;i<=gap;i++) { for(int j=i+gap;j<=n;j+=gap) { int cur=a[j],last_i=j-gap;//當前元素,上一元素的下標 while(last_i>0) { if(cur<a[last_i]) { a[last_i+gap]=a[last_i]; last_i-=gap; }else break; } a[last_i+gap]=cur; } } // for(int i=1;i<=n;i++) cout<<a[i]<<" "; // printf("--希爾排序\n"); shell(gap/2); } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } shell(n/2); for(int i=1;i<=n;i++) cout<<a[i]<<" "; } //10 //8 9 1 7 2 3 5 4 6 0