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

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

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

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

    希爾排序(shellsort)算法實現

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

          假設有一個數組int data[16] = {...}。 首先將這個增量設為16 / 2 = 8, 這樣就將這個數組分成了8個子數組,它們的索引是0, 8    1, 9   2, 10等等 。對這些子數組進行排序。然后再使增量為8 / 2 = 4,這樣就將原數組分成了4個子數組,它們的索引分別是0, 4, 8, 12    1, 5, 9, 13等等。再對這四組數進行排序,直到增量為1。
         以上所描述的增量遞減只是一種方法,這種方法并不是最有效率的。如f(n) = 3 * f(n - 1) + 1  f(1) = 1   (..., 121, 40, 13,  4, 1)就比上面的取增量的方法好。這種方法的時間復雜度是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開發完全講義(第2版)(本書版權已輸出到臺灣)

    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)算法實現  回復  更多評論   

    這是最標準的算法
    2008-05-16 12:08 | 網上買書
    主站蜘蛛池模板: 亚洲国产成人精品激情| 亚洲va无码手机在线电影| 亚洲伦理中文字幕| 最近中文字幕大全中文字幕免费| 亚洲人成亚洲人成在线观看| 久久久久女教师免费一区| 国产精品亚洲综合一区| eeuss影院免费92242部| 久久久久国产成人精品亚洲午夜 | 久久亚洲精品成人av无码网站 | 久久综合九色综合97免费下载| 亚洲日产韩国一二三四区| 最近免费中文字幕中文高清| 亚洲日本乱码在线观看| 免费人成在线观看网站| 中国内地毛片免费高清| 亚洲欧洲精品无码AV| 中文字幕乱码一区二区免费| 亚洲精品天天影视综合网| 国产免费看JIZZ视频| 精品亚洲福利一区二区| 国产精品亚洲高清一区二区| 国产一级片免费看| 亚洲伊人久久大香线蕉啊| 全免费a级毛片免费看不卡| 黄色网址大全免费| 久久久久亚洲精品成人网小说| 最近中文字幕大全免费视频| 亚洲精华液一二三产区| 国产亚洲美女精品久久久| 免费在线观看视频网站| 精品国产日韩亚洲一区91| 国产成人亚洲精品青草天美| 一级女人18毛片免费| 久久久久亚洲精品无码网址色欲 | 国产大片免费网站不卡美女| 亚洲av无码日韩av无码网站冲| 中文字幕久久亚洲一区 | 精品免费久久久久久久| 怡红院亚洲红怡院在线观看| 国产亚洲精品资源在线26u|