【排序】希爾排序
阿新 • • 發佈:2018-04-06
lock itl shells pos height OS 排序 代碼 font
原創博文,轉載請註明出處!
本文代碼的github地址
# 基本思路
希爾排序是”直接插入排序“的改進版,也稱為“縮小增量排序”。基本原理:先將待排序的數組元素分成多個序列,使得每個子序列的元素個數相對較小,然後對每個子序列分別進行直接插入排序,帶整個待排序序列基本有序後,最後再對多有元素進行一次直接插入排序。
# C++代碼
1 2 for(int gap=vec.size()/2;gap>0;gap/=2) 3 { 4 5 for(int i=gap;i<vec.size();++i) 6 { 7 intj=i; 8 while(j-gap>=0 && vec[j-gap]>vec[j]) 9 { 10 vec[j-gap] = vec[j-gap]+vec[j]; 11 vec[j] = vec[j-gap]-vec[j]; 12 vec[j-gap] = vec[j-gap]-vec[j]; 13 j=j-gap; 14 } 15 } 16} 17 18 for(int i=0;i<vec.size();++i) 19 { 20 cout<<vec[i]<<endl; 21 } 22
【排序】希爾排序