<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

      
    希爾排序?qū)儆诓迦腩惻判?是將整個無序列分割成若干小的子序列分別進行插入排序。

    假如現(xiàn)有一數(shù)組: [49, 38, 65, 44, 81, 97, 76, 13, 27, 52, 30]

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



    C++ 實現(xiàn)代碼片段

      
    //希爾排序
    //按自然順序
    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 實現(xiàn)代碼片段

           
    //希爾排序,按自然順序
    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++ 實現(xiàn)完整代碼

       
    /**
     * <!--
     * 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;
            }
        }
    }

    //遍歷數(shù)組
    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);
        
    /**
         * 控制臺輸出結(jié)果:
         *
         * 排序前: 65318724
         * 希爾排序: 12345678
         
    */
        
    return 0;

    }
       




    Java 實現(xiàn)完整代碼

       
    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)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲AV本道一区二区三区四区| 亚洲欧洲精品成人久久曰影片| 久久精品国产亚洲av四虎| 国产99精品一区二区三区免费| 免费国产美女爽到喷出水来视频| 亚洲精品日韩一区二区小说| 国产成人免费ā片在线观看| 亚洲av无码一区二区三区人妖| 全黄a免费一级毛片人人爱| 日本精品久久久久久久久免费| 亚洲美女在线国产| 最近2019中文免费字幕在线观看| 国产av无码专区亚洲av桃花庵| 国产精品免费看久久久| 亚洲精品91在线| 国产成人午夜精品免费视频| 亚洲砖码砖专无区2023 | 天天综合亚洲色在线精品| 国产又黄又爽又刺激的免费网址 | 亚洲国产一区二区a毛片| 人妻无码久久一区二区三区免费| 亚洲天堂一区二区三区四区| 国外成人免费高清激情视频| 一级做a爱过程免费视频高清| 亚洲性猛交XXXX| 麻豆一区二区免费播放网站| 婷婷国产偷v国产偷v亚洲| 亚洲色自偷自拍另类小说| 国产免费不卡视频| 阿v免费在线观看| 亚洲精品成人无限看| 午夜性色一区二区三区免费不卡视频 | 国产在线观看麻豆91精品免费| 亚洲人成未满十八禁网站| 亚洲国产精品综合久久一线| 久久99精品国产免费观看| 亚洲最大福利视频| 国产gv天堂亚洲国产gv刚刚碰| 国产成人精品免费午夜app| 美女的胸又黄又www网站免费| 亚洲色欲久久久综合网|