1. 程式人生 > >【排序】希爾排序

【排序】希爾排序

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             int
j=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

【排序】希爾排序