首页 > 编程语言 > 详细

【排序】希尔排序

时间:2018-04-06 13:06:02      阅读:130      评论:0      收藏:0      [点我收藏+]

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

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

【排序】希尔排序

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!