• Shell排序


    shell排序(希尔排序) , 基本的思想是将数据按某一分量分成几个分组 , 分别对分组进行直接插入排序 ,  然后逐渐缩小分量 ,再继续进行直接插入排序 , 。。。,如此循环下去 , 知道 衡量等于1  。  至于衡量的选择 , 至今还没有较好的解决方法 。

    衡量的缩小规则  :  设初始衡量等于  gap = len/n +m   ,  缩小的时候   gap = gap/n + m

    shell排序的实现

     1 typedef        struct    _tagItem{
     2     int        num[MAX_SIZE+1]; //num[0]作为监视哨
     3     int        len;
     4 }Item,*PItem;
     5 
     6 void    shell_sort(PItem    p , int flag )
     7 {        
     8     int        i = 0 , j = 0 ,gap;
     9     //循环缩小分量
    10     for( gap = p->len/3  ;  gap>0  ; gap /= 3){
    11         //对每个元素在其分组内进行插入排序  ,  当循环结束后,
    12         //每个元素都在分组中进行了插入排序,这样相当于对每个
    13         //分组都进行了插入排序
    14         for(i = gap+1 ; i <= p->len ; i++){
    15             if(p->num[ i - gap] > p->num[i]){
    16                 p->num[0] = p->num[i];
    17                 j = i;
    18                 //调整元素在分组中的位置
    19                 do{
    20                     p->num[j] = p->num[ j-gap];
    21                     j -= gap;
    22                 }while(j-gap>=0&&p->num[ j-gap] > p->num[ 0]);
    23                 p->num[j] = p->num[0];
    24             }
    25         }
    26     }
    27 }
  • 相关阅读:
    寒假学习24idea连接mongo
    安装破解project
    寒假学习19FileZilla连接centos7失败处理(SSH)
    寒假学习22IDEA Junit4配置
    寒假学习25javaswing 入门介绍
    寒假学习20VS Code中格式化插件PrettierCode Formatter保姆级设置
    空3
    7
    kafka集群搭建及启动脚本
    空6
  • 原文地址:https://www.cnblogs.com/wowk/p/2958630.html
Copyright © 2020-2023  润新知