讀書筆記之三種簡單排序

來源:互聯網
上載者:User

三種簡單排序演算法實現:插入排序、選擇排序、冒泡排序。

系統內容:
[lanux@localhost--Debug--18:10]$uname -sr
Linux 2.6.34.7-61.fc13.i686.PAE
編譯器環境:
anjuta-2.30.2.1

 

 


 

 


1、插入排序:

/*對無序表插入排序,區間為【1,len】,<br />無序表長度為len+1,下為非遞減排序*/<br />int InsertSort( int *SqList, int len )<br />{<br />if( (len<0) || (SqList==NULL) )<br />return 0;<br />int i,j=0;<br />/*將一個元素插入已經有序的表中,為一趟插入排序*/<br />for( j=2; j<=len; j++ )<br />{<br />SqList[0]=SqList[j];//設定監哨位,同時作臨時儲存<br />for( i=j-1; SqList[0]<SqList[i]; i-- )<br />{<br />SqList[i+1]=SqList[i];//如果沒有找到位置,就後移<br />}//找到正確的位置為i+1<br />SqList[i+1]=SqList[0];//將SqList[j]插入i的後面<br />}//for<br />return 1;<br />}

插入排序結果:

[lanux@localhost--Debug--18:15]$./sort_testing
array number fallow as:
 510  733  357  747  412  625  343   55  163  443
 817   24  250  258  421  983  815  878  945  317
The insert sort follow:
  24   55  163  250  258  317  343  357  412  421
 443  510  625  733  747  815  817  878  945  983
+++++++++++++++++++++++++++++++++++++++

 

 

 

 

 

 

 

 

2、選擇排序:

/*對無序表選擇排序,區間為【1,len】,<br />無序表長度為len+1,下為非遞減排序*/<br />int SelectSort(int *SqList, int len)<br />{<br />int max=0;<br />int i=0;<br />int j=0;<br />if( (len<0) || (SqList==NULL) )<br />return 0;<br />/*一趟排序中選出最大的元素,將其放入已經有序的表中*/<br />for( j=len; j>1; j-- )<br />{<br />max=1;//max指向一趟排序中最大的數<br />for( i=2; i<=j; i++ )<br />{<br />if( SqList[max]<SqList[i] )<br />max=i;<br />}<br />/*把最大的數交換到最後一個*/<br />SqList[0]=SqList[j];<br />SqList[j]=SqList[max];<br />SqList[max]=SqList[0];<br />}<br />return 1;<br />}

選擇排序結果:

[lanux@localhost--Debug--18:15]$./sort_testing
array number fallow as:
 436  597  903  999  281  806  504  456  538  851
 236  332  931  908  249   37  568  292    9  502
The select sort follow:
   9   37  236  249  281  292  332  436  456  502
 504  538  568  597  806  851  903  908  931  999
+++++++++++++++++++++++++++++++++++++++

 

 

 

 

 

 

 

 


3、冒泡排序

/*對無序表冒泡排序,區間為【1,len】,<br />無序表長度為len+1,下為非遞減排序*/<br />int BubbleSort(int *SqList, int len)<br />{<br />if( (len<0) || (SqList==NULL) )<br />return 0;<br />int i=0;<br />int j=0;<br />/*冒泡是屬於交換排序,通過不斷地比較和交換,<br />得到最大或最小的冒出來,為一趟排序*/<br />for( j=len; j>0; j-- )<br />for( i=1; i<j; i++ )<br />{<br />/*如i比i+1的大,就交換,到最後一個冒出是最大的了*/<br />if( SqList[i+1]<=SqList[i] )<br />{<br />SqList[0]=SqList[i+1];<br />SqList[i+1]=SqList[i];<br />SqList[i]=SqList[0];<br />}<br />}<br />return 1;<br />}

冒泡排序結果:

[lanux@localhost--Debug--18:23]$./sort_testing
array number fallow as:
 633  954  218  636  285  189  934  236  320  363
 555  431  809  298  769  656  761  681  357  765
The bubble sort follow:
 189  218  236  285  298  320  357  363  431  555
 633  636  656  681  761  765  769  809  934  954
+++++++++++++++++++++++++++++++++++++++

 

2010-11-27 18:28:45

聯繫我們

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