希尔排序.txt

来自「c语言排序」· 文本 代码 · 共 38 行

TXT
38
字号
 Espate studio


--------------------------------------------------------------------------------

希尔排序

基本思想:

      希尔是把直接插入方法分成插入步长由大到小不同的趟来进行,一开始步长较大,把序列  分成几个子表,每个子表结点少,直接插入排序效率高。以后步长逐渐减少直至为一。每次都对分成的子表进行插入排序。可见后一趟的插入排序就能充分利用前一趟的排序结果,后一趟的排序效率就会提高。

参考程序

      假设一数组起始地址为 p,n个数的希尔排序如下

void shellsort(int * p,int n)
{
     int h;
     int e;
     int i;
     int j;
     for(h=n/2;h>0;h=h/2)//初始步长设为n/2
          for(j=h;j<n;j++)
          {
               if (p[j]<p[j-h])
               {
                    e=p[j];
                    for(i=j-h;i>=0&&p[i]>e;i=i-h)
                         p[i+h]=p[i];
                    p[i+h]=e; 

               }
          }
}


adiwei

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?