<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)航:
     
    主站蜘蛛池模板: 永久免费bbbbbb视频| 亚洲高清在线视频| a级片免费观看视频| 亚洲精品国产啊女成拍色拍| 在线免费观看视频你懂的| fc2免费人成在线| 亚洲国产韩国一区二区| 亚洲AV无码成H人在线观看| 91精品手机国产免费| 羞羞的视频在线免费观看| 久久精品国产亚洲AV嫖农村妇女| 成人黄18免费视频| av永久免费网站在线观看| 亚洲国产成人久久精品软件 | 久久一区二区免费播放| 亚洲a∨无码男人的天堂| 精品国产亚洲男女在线线电影| 国产a视频精品免费观看| 国产VA免费精品高清在线| 日韩亚洲产在线观看| 亚洲AV无码成人精品区天堂| 精品久久免费视频| 88xx成人永久免费观看| 一个人看的www免费在线视频| 亚洲资源最新版在线观看| 亚洲国产精品VA在线看黑人| 国产成人涩涩涩视频在线观看免费 | 免费人成视频在线| 无码人妻久久一区二区三区免费 | 无码日韩精品一区二区三区免费 | 国产精品亚洲а∨无码播放| 日本一道本高清免费| 色播精品免费小视频| 免费无码H肉动漫在线观看麻豆| 亚洲AV无码一区二区三区电影 | 猫咪免费人成网站在线观看| 成人免费ā片在线观看| 色一情一乱一伦一视频免费看| 亚洲国产精品综合一区在线| 亚洲va在线va天堂va不卡下载 | 亚洲成AV人片在线观看|