zoukankan      html  css  js  c++  java
  • shell(希尔)排序

     shell(希尔)排序是一种改进的插入排序(链接),如对数组{4, 7, 2, 8, 5, 1, 3, 6},取距离增量为d = 8/2 = 4,形式上将数组分为了4组,
    4 7 2 8
    5 1 3 6
    

    每一列为一组,组内排序后为
    4 1 2 6
    5 7 3 8
    
    ,即排序后的数组为{4 1 2 6 5 7 3 8},再取距离增量为d = 4/2 = 2,则可分为2组,每一列为一组
    4 1
    2 6
    5 7
    3 8
    
     ,组内排序后为
     
    2 1
    3 6
    4 7
    5 8
    
    排序后的数组为{2 1 3 6 4 7 5 8},然后采用插入排序即可。
    下面的shell_sort函数为<<C programming language>>中的源码
     
    #include <iostream>
    using namespace std;

    void shell_sort(int* a, int n);
    int main()
    {
    int a[8] = {4, 7, 2, 8, 5, 1, 3, 6};
    shell_sort(a,
    8);
    for(int i = 0;i <8;i++)
    printf(
    "%d\n", a[i]);
    return 0;
    }

    void shell_sort(int v[], int n)
    {
    int gap, i, j, temp;
    for (gap = n/2; gap > 0; gap /= 2)
    for (i = gap; i < n; i++)
    for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap)
    {
    temp
    = v[j];
    v[j]
    = v[j+gap];
    v[j
    +gap] = temp;
    }
    }
  • 相关阅读:
    java版扫雷
    隔离级别
    Servlet Analysis
    Session&Cookie
    centos上部署应用到tomcat
    在CentOS 7中安装与配置Tomcat-8.5方法
    centos7中安装、配置jdk(转载)
    java RE Validation常用
    hello2 source Analysis
    serlvet中的过滤器filter
  • 原文地址:https://www.cnblogs.com/null00/p/2065045.html
Copyright © 2011-2022 走看看