讀書筆記之shell排序

來源:互聯網
上載者:User

環境:

[lanux@localhost--Debug--15:29]$uname -sr
Linux 2.6.34.7-61.fc13.i686.PAE
[lanux@localhost--Debug--15:32]$rpm -qa|grep anjuta
anjuta-doc-2.30.2.1-1.fc13.noarch
anjuta-2.30.2.1-1.fc13.i686
anjuta-devel-2.30.2.1-1.fc13.i686
[lanux@localhost--Debug--15:33]$

 

 

此shell排序對增量序列作簡單化假設,假設為{0,1,5,19,41}。

 

C代碼:



一趟shell排序:

//一趟shell排序<br />int oneSortShell( int *SqList, int delt, int len)<br />{<br />if( delt<0 || len<0 || (SqList==NULL) )<br />return(0);<br />for( int i=1; i<(delt+1); i++)<br />{<br />/*子序列中插入排序*/<br />for( int j=(i+delt); j<(len+1); j=j+delt )<br />{<br />int k=0;<br />/*將j插入前面已排好序列*/<br />SqList[0]=SqList[j];<br />for( k=j-delt; (k>0) && (SqList[0]<SqList[k]) ; k=k-delt )<br />{<br />/*如果SqList[0]和SqList[k]相等就不移動,維持其穩定性*/<br />SqList[k+delt]=SqList[k];<br />}//for 一趟插入排序<br />SqList[k+delt]=SqList[0];<br />}//for<br />}//各子序列插入排序<br />return(1);<br />}

 

增量序列假設:

//全域變數shell排序增量序列,假設如下:<br />int incrementSeq[4+1]={0,1,5,19,41};//作示範性假設

 

shell排序:

/*對無序表希爾排序,區間為【1,len】,無序表長度為len+1*/<br />/*SqList: 無序表<br /> incrTable: 增量序列,一般為{1,5,19,41,109...}<br /> tlen: 增量序列長度,這裡區間也是【1,tlen】<br /> len: 無序表長度,區間【1,len】<br /> 為非遞減排序,已考慮保持穩定性*/<br />int ShellSort( int *SqList, int *incrTable, int tlen, int len)<br />{<br />if( tlen<0 || len<0 || (SqList==NULL) || (incrTable==NULL))<br />return(0);<br />for( int j=tlen; j>0; j-- )<br />{<br />oneSortShell(SqList,incrTable[j],len);<br />}<br />return(1);<br />}

 

結果樣本:

[lanux@localhost--Debug--15:33]$./shellsort
array number fallow as:
   841    372    566    967    201    692    967     94    192    486
   784    308     96    922    452     43    433    429    519    856
   962    780    830    910    316    265    932    547    194    491
The shell sort follow:
    43     94     96    192    194    201    265    308    316    372
   429    433    452    486    491    519    547    566    692    780
   784    830    841    856    910    922    932    962    967    967
[lanux@localhost--Debug--15:46]$

 

2010-12-03  15:47:00

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.