排序之希爾排序

來源:互聯網
上載者:User

希爾排序(Shell Sort)是插入排序的一種。是針對直接插入排序演算法的改進。該方法又稱縮小增量排序,因DL.Shell於1959年提出而得名。

先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重複上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。

c語言的實現如下:

#include <stdio.h>//列印數組void display(int array[],int size){        printf("the array is:");        int i;        for(i=0;i<size;i++){                printf("%d ",array[i]);        }        printf("\n");}void sort(int array[],int size){        int i,incr,temp;//初始時,增量為size/2        incr = size/2;//最終的增量為1        while(incr>=1){                for(i=0;(i+incr)<size;i++){//如果array[i]大於array[i+incr],則交換2個數                        if(array[i] > array[i+incr]){                                temp = array[i];                                array[i] = array[i+incr];                                array[i+incr] = temp;                        }                }//增量--                incr--;                display(array,size);        }}int main(void){        int array[10]={34,45,1,39,21,68,65,100,4,51};        display(array,10);//希爾排序函數        sort(array,10);        return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.