<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    希爾排序(shellsort)算法實(shí)現(xiàn)

        希爾排序(shellsort)又叫增量遞減(diminishing increment)排序,是由D.L. Shell發(fā)明的,這個(gè)算法是通過一個(gè)逐漸減小的增量使一個(gè)數(shù)組逐漸趨近于有序從而達(dá)到排序的目的。

          假設(shè)有一個(gè)數(shù)組int data[16] = {...}。 首先將這個(gè)增量設(shè)為16 / 2 = 8, 這樣就將這個(gè)數(shù)組分成了8個(gè)子數(shù)組,它們的索引是0, 8    1, 9   2, 10等等 。對這些子數(shù)組進(jìn)行排序。然后再使增量為8 / 2 = 4,這樣就將原數(shù)組分成了4個(gè)子數(shù)組,它們的索引分別是0, 4, 8, 12    1, 5, 9, 13等等。再對這四組數(shù)進(jìn)行排序,直到增量為1。
         以上所描述的增量遞減只是一種方法,這種方法并不是最有效率的。如f(n) = 3 * f(n - 1) + 1  f(1) = 1   (..., 121, 40, 13,  4, 1)就比上面的取增量的方法好。這種方法的時(shí)間復(fù)雜度是O(n ^1.5)

    算法如下

    #include <stdio.h>

    void output_array(int data[], int n)
    {
        
    int i;
        
    for(i = 0; i < n; i++)
            printf(
    "%d ", data[i]);
        printf(
    "\n");
    }
    void swap(int *a, int *b)
    {
        
    int x;
        x 
    = *a;
        
    *= *b;
        
    *= x;
    }
    void insertion_sort(int data[], int n, int increment)
    {
        
    int i, j;
        
    for(i = increment; i < n; i += increment)
            
    for(j = i; j >= increment && data[j] > data[j - increment]; j -= increment)
                swap(
    &data[j], &data[j - increment]);
    }
    void shellsort(int data[], int n)
    {
        
    int i, j;
        
    for(i = n / 2; i > 2; i /= 2)
            
    for(j = 0; j < i; j++)
                insertion_sort(data 
    + j, n - j, i);
        insertion_sort(data, n, 
    1);
    }
    int main()
    {
        
    int data[] = {5316657766441110986};
        output_array(data, 
    12);
        shellsort(data, 
    12);
        output_array(data, 
    12);
        
    return 0;
    }




    Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2008-05-15 22:01 銀河使者 閱讀(2402) 評論(1)  編輯  收藏 所屬分類: algorithmC/C++

    評論

    # re: 希爾排序(shellsort)算法實(shí)現(xiàn)  回復(fù)  更多評論   

    這是最標(biāo)準(zhǔn)的算法
    2008-05-16 12:08 | 網(wǎng)上買書
    主站蜘蛛池模板: 成人免费视频一区二区| 亚洲午夜成激人情在线影院| 美女裸体无遮挡免费视频网站| 中文字幕亚洲天堂| 免费国产黄网站在线观看动图| 国产大片91精品免费看3| 国产成人精品久久亚洲高清不卡| 日本免费人成黄页在线观看视频| 亚洲国产精华液2020| 日本无卡码免费一区二区三区| 午夜亚洲乱码伦小说区69堂| 国产精品成人无码免费| 免费大片av手机看片| 亚洲一区二区高清| 免费一级不卡毛片| 久久久亚洲AV波多野结衣| ww在线观视频免费观看| 亚洲看片无码在线视频| 国产伦精品一区二区三区免费迷 | 亚洲成AV人网址| 无码 免费 国产在线观看91| 亚洲性猛交XXXX| 中文字幕在线免费观看| 亚洲精品无码你懂的| www.亚洲色图.com| 久久精品电影免费动漫| 亚洲一区精品视频在线| 污污网站免费观看| 亚洲精品国产精品国自产网站 | 无码免费一区二区三区免费播放| 亚洲高清美女一区二区三区| 成人无码区免费视频观看| 日韩a毛片免费观看| 久久亚洲精品成人综合| 成人毛片免费播放| 黄视频在线观看免费| 亚洲色欲色欲www| AV在线播放日韩亚洲欧| AA免费观看的1000部电影| 亚洲美女视频网站| 国产jizzjizz免费看jizz|