码迷,mamicode.com
首页 > 编程语言 > 详细

【排序】希尔排序

时间:2018-04-06 14:01:32      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:lock   分享   .cpp   nbsp   hub   tco   ges   git   技术分享   

原创博文,转载请注明出处!

本文代码的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 

【排序】希尔排序

标签:lock   分享   .cpp   nbsp   hub   tco   ges   git   技术分享   

原文地址:https://www.cnblogs.com/wanglei5205/p/8727377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!