ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
希尔排序 - Wikipedia

希尔排序

维基百科,自由的百科全书

希尔排序(Shell Sort)也称为递减增量排序算法,是插入排序的一种高速而安定的改良版。因希尔(Donald L. Shell)于1959年提出而得名。各种实现在如何进行递减上有所不同。

對有n個元素的可比較資料,先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-1<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。

该方法实质上是一种分组插入方法。

[编辑] Code Sample in C

int main()
{
    const int n = 5;
    int i, j, gap, temp; 
    int a[] = {5, 4, 3, 2, 1}; 
    gap = n/2; 
    while (gap>0) 
    {
        for (i = gap; i < n; i++)
        {
            j = i - gap;
            
            while (j >= 0)
            {
                if (a[j]>a[j + gap])
                {
                    temp = a[j];
                    a[j] = a[j + gap];
                    a[j + gap] = temp;
                    j = j - gap;
                }
                else 
                    j = -1;/* or break */
            }
        }
        
        gap = gap/2;
    }    
}

[编辑] Code Sample in Java

void shellsort (int[] a, int n)
{
    int i, j, k, temp, gap;
    int[] gaps = { 1,5,13,43,113,297,815,1989,4711,11969,27901,84801,
                   213331,543749,1355339,3501671,8810089,21521774,
                   58548857,157840433,410151271,1131376761,2147483647 };
    for (k=0; gaps[k]<n; k++) ;
    while (--k >= 0)
    {
        gap = gaps[k];
        for (i=gap; i<n; i++)
        {
            temp = a[i];
            j = i;
            while (j>=gap && a[j-gap]>temp)
            {
                a[j] = a[j-gap];
                j = j-gap;
            }
            a[j] = temp;
        }
    }
}


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -