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

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

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

    隨筆-126  評論-247  文章-5  trackbacks-0

      
    希爾排序屬于插入類排序,是將整個無序列分割成若干小的子序列分別進行插入排序。

    假如現有一數組: [49, 38, 65, 44, 81, 97, 76, 13, 27, 52, 30]

    則可以以步長為5開始對數組進行排序。為了更加直觀的表現這一過程,下面將該數組元素分成3行,并對每一列進行排序(直接插入排序)



    C++ 實現代碼片段

      
    //希爾排序
    //按自然順序
    void shellsort(Element array[], int len){
        
    int i, index, key;
        
    for(int step = len / 2; step > 0; step /= 2){  //每趟步長折半
            for(index = step; index < len; index++){
                key 
    = array[index];
                
    for(i = index - step; i >= 0 && array[i] > key; i -= step){
                    array[i 
    + step] = array[i];
                }
                array[i 
    + step] = key;
            }
        }
    }
      


    Java 實現代碼片段

           
    //希爾排序,按自然順序
    public static void shellsort(int[] array){
        
    int i, index, key;
        
    for(int step = array.length / 2; step > 0; step /= 2){  //每趟步長折半
            
    //直接插入排序
            for(index = step; index < array.length; index++){
                key 
    = array[index];
                
    for(i = index - step; i >= 0 && array[i] > key; i -= step){
                    array[i 
    + step] = array[i];
                }
                array[i 
    + step] = key;
            }
        }
    }
         


    C++ 實現完整代碼

       
    /**
     * <!--
     * File   : insertsort.h
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-05
     * --!>
     
    */
    #include 
    <stdio.h>
    #include 
    <stdlib.h>
    #define length(array) sizeof(array) / sizeof(array[0])
    #define Element int
    #define format "%d"

    //希爾排序
    //按自然順序
    void shellsort(Element array[], int len){
        
    int i, index, key;
        
    for(int step = len / 2; step > 0; step /= 2){  //每趟步長折半
            for(index = step; index < len; index++){
                key 
    = array[index];
                
    for(i = index - step; i >= 0 && array[i] > key; i -= step){
                    array[i 
    + step] = array[i];
                }
                array[i 
    + step] = key;
            }
        }
    }

    //遍歷數組
    void visit(Element array[], int len){
        
    for(int i = 0; i < len; i++){
            printf(format, array[i]);
        }
    }
       

     

       
    /**
     * <!--
     * File   : InsertSort.cpp
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-05
     * --!>
     
    */
    #include 
    "insertsort.h"

    int main() {

        Element array[
    8= {65318724};
        
    int len = length(array);
        printf(
    "\n排序前: ");
        visit(array, len);
        printf(
    "\n希爾排序: ");
        shellsort(array, len);
        visit(array, len);
        
    /**
         * 控制臺輸出結果:
         *
         * 排序前: 65318724
         * 希爾排序: 12345678
         
    */
        
    return 0;

    }
       




    Java 實現完整代碼

       
    package net.yeah.fancydeepin.sort.insert;
    /**
     * <!--
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-05
     * --!>
     
    */
    public class Sort {

        
    private Sort(){}
           
        
    //希爾排序,按自然順序
        public static void shellsort(int[] array){
            
    int i, index, key;
            
    for(int step = array.length / 2; step > 0; step /= 2){  //每趟步長折半
                
    //直接插入排序
                for(index = step; index < array.length; index++){
                    key 
    = array[index];
                    
    for(i = index - step; i >= 0 && array[i] > key; i -= step){
                        array[i 
    + step] = array[i];
                    }
                    array[i 
    + step] = key;
                }
            }
        }
           
    }
       

     

       
    package test;
    /**
     * <!--
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-05
     * --!>
     
    */
    import net.yeah.fancydeepin.sort.insert.Sort;

    public class Test {

        
    public static void main(String[] args) {
            
            
    int[] array = {65318724};
            Sort.shellsort(array);
            
    for(int obj : array){
                System.out.print(obj);
            }
        }
    }
       


     



      
    posted on 2013-02-05 16:00 fancydeepin 閱讀(1158) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久精品国产亚洲香蕉| 亚洲色大成网站www永久一区| 国产亚洲日韩一区二区三区| 日韩亚洲国产综合高清| 99久久精品国产免费| 久久亚洲国产欧洲精品一| 一级做a爱过程免费视频高清| 免费毛片网站在线观看| 亚洲日韩AV一区二区三区四区 | 一级毛片免费视频网站| 四虎国产精品免费视| 精品国产亚洲一区二区三区在线观看 | 日本免费电影一区二区| 亚洲精品无码久久千人斩| 永久免费AV无码网站国产| 亚洲国产成人私人影院| 麻花传媒剧在线mv免费观看| 亚洲无线电影官网| 成人黄动漫画免费网站视频| 亚洲成a人无码亚洲成av无码| 免费人成在线观看播放国产| 国产高清对白在线观看免费91| 亚洲成av人片天堂网| 久热中文字幕在线精品免费| 欧美亚洲精品一区二区| 亚洲区不卡顿区在线观看| 久久A级毛片免费观看| 中文有码亚洲制服av片| 亚洲日产无码中文字幕| 亚洲成人在线免费观看| 毛片亚洲AV无码精品国产午夜| 中文字幕在线亚洲精品| 久草视频免费在线| 好男人资源在线WWW免费| 亚洲天堂一区二区三区四区| 亚洲国产精品成人网址天堂| 1000部免费啪啪十八未年禁止观看 | 色窝窝亚洲av网| 久久精品九九亚洲精品| 亚洲国产精品激情在线观看| 久久精品无码专区免费东京热 |