《大話資料結構》第9章 排序 9.3 冒泡排序(上)_大話資料結構

來源:互聯網
上載者:User
9.3.1 最簡單排序實現

        無論你學習哪種程式設計語言,在學到迴圈和數組時,通常都會介紹一種排序演算法來作為例子,而這個演算法一般就是冒泡排序。並不是它的名稱很好聽,而是說這個演算法的思路最簡單,最容易理解。因此,哪怕大家可能都已經學過冒泡排序了,我們還是從這個演算法開始我們的排序之旅。

 

        冒泡排序(Bubble Sort)一種交換排序,它的基本思想是:兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。冒泡的實現在細節上可以很多種變化,我們將分別就3種不同的冒泡實現代碼,來講解冒泡排序的思想。這裡,我們就先來看看比較容易理解的一段。

/* 對順序表L作交換排序(冒泡排序初級版) */void BubbleSort0(SqList *L){  int i,j; for(i=1;i<L->length;i++) {  for(j=i+1;j<=L->length;j++)  {   if(L->r[i]>L->r[j])   {     swap(L,i,j); /* 交換L->r[i]與L->r[j]的值 */   }  } }}

        這段代碼嚴格意義上說,不算是標準的冒泡排序演算法,因為它不滿足“兩兩比較相鄰記錄”的冒泡排序思想,它更應該是最最簡單的交換排序而已。它的思路就是讓每一個關鍵字,都和它後面的每一個關鍵字比較,如果大則交換,這樣第一位置的關鍵字在一次迴圈後一定變成最小值。如圖9-3-2,假設我們待排序的關鍵字序列是{9,1,5,8,3,7,4,6,2},當i=1時,9與1交換後,在第一位置的1與後面的關鍵字比較都小,因此它就是最小值。當i=2時,第二位置先後由9換成5,換成3,換成2,完成了第二小的數字交換。後面的數字變換類似,不再介紹。
 

 

        它應該算是最最容易寫出的排序代碼了,不過這個簡單易懂的代碼,卻是有缺陷的。觀察後發現,在排序好1和2的位置後,對其餘關鍵字的排序沒有什麼協助(數字3反而還被換到了最後一位)。也就是說,這個演算法的效率是非常低的。

出處:http://www.cnblogs.com/cj723/archive/2011/04/15/2016679.html

聯繫我們

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