zoukankan      html  css  js  c++  java
  • 算法六:希尔排序

    希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量=1(<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。

    1.就是先确定步长,按照步长(leng/2)将数组分开,把每个子序列插入排序,10个元素,按照步长为5可以分为5组

    2.将步长在缩短5/2 = 2;再进行插入排序

    3.在将步长缩短2/2 = 1 一个一组

    待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序

    #include <iostream>
    
    using namespace std;
    
    void shellSort(int a[],int num)
    {
          for(int gap = num/2;gap >0;gap/=2)
          {
                for(int i = gap; i < num;i++)
                {
                      int key = a[i];
                      int j = i - gap;
                      for(;j>=0&&temp>a[j];j-=gap)
                             a[j+gap] = a[j];
                      a[j+gap] = temp;                   
                }
          }   
    }
    
    int main()
    {
         int a[] = {3,1,2,6,9};
         shellSort(a,4);
         for(int i =0;i< 5;i++)
              pritf("%d   ",a[i]);
         cin.get();
    }        
    
  • 相关阅读:
    文本文件、二进制文件
    trunc()
    字符集、编码
    windows注册表:扫盲
    decode() & sign()
    移动前端工作的那些事前端制作之自适应制作篇
    css hack知识详解
    IE6兼容性大全
    JS正则匹配入门基础!
    [转载]Javascript中批量定义CSS样式 cssText属性
  • 原文地址:https://www.cnblogs.com/xiaoma123/p/5220819.html
Copyright © 2011-2022 走看看