• 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;
    }
    }
  • 相关阅读:
    微信公众号项目部署
    数据库存入年月日时分秒类型时间问题
    路径问题
    常用DOS命令
    解决Maven下载慢的问题
    害人不浅的数学翻译
    Webpack4 踩坑记
    React 踩坑记
    what's the problem of Object oriented programming
    为什么JVM调优?
  • 原文地址:https://www.cnblogs.com/null00/p/2065045.html
Copyright © 2020-2023  润新知