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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品一区二区三区四区乱码| 久久午夜夜伦鲁鲁片免费无码| 美女视频黄的全免费视频 | 99re在线这里只有精品免费| 亚洲色WWW成人永久网址| 青柠影视在线观看免费| 亚洲AV无码乱码国产麻豆穿越 | 成人影片一区免费观看| 亚洲中文字幕久久精品无码喷水 | 浮力影院第一页小视频国产在线观看免费 | 国产精品亚洲AV三区| 精品无码国产污污污免费| 午夜亚洲国产理论片二级港台二级| 日本黄色免费观看| 免费看一级一级人妻片| 亚洲日韩欧洲乱码AV夜夜摸| 免费无码av片在线观看| 亚洲狠狠狠一区二区三区| 手机在线毛片免费播放| 美国免费高清一级毛片| 亚洲精品成人网站在线观看| 182tv免费视视频线路一二三| 亚洲视频无码高清在线| 亚洲av手机在线观看| 99久久免费国产精精品| 亚洲另类精品xxxx人妖| 国产精品jizz在线观看免费| 中文字幕无码毛片免费看| 亚洲国产精品白丝在线观看| 国产免费久久精品| 精品一卡2卡三卡4卡免费视频| 亚洲国产精品久久人人爱| 四虎影院永久免费观看| 国产一区二区免费视频| 亚洲AV无码一区二区三区牛牛| 亚洲国产精品专区在线观看| 日韩人妻无码精品久久免费一| 亚洲午夜精品久久久久久app| 亚洲人JIZZ日本人| 色吊丝永久在线观看最新免费| aa级女人大片喷水视频免费|