演算法熟記-排序系列-冒泡排序

來源:互聯網
上載者:User

1. 簡述

    假設待排序數組為 int array[], 數組長度為n。
    第1趟在array[0]-array[n-1]範圍內,從後向前依次比較,把較小交換到前面,最終最小的元素會站在array[0]裡面。
    第2趟在array[1]-array[n-1]範圍內,··· ,最終第二小的元素會站在array[1]裡面。
    ...
    第n-1趟,在array[n-2]-array[n-1]範圍內,··· , 最終第n-1小的元素會站在array[n-2]裡面。
    至此,排序結束。

2. 複雜度

   時間複雜度T=O(n*n),而且如果按照上面的演算法來實現,最壞、最好以及平均的複雜度都是O(n*n),因為即使數組已經排序好了,還會繼續比較下去。因此,如果在某一趟排序過程中,發現已經有序了,那麼就可以終止排序了,即使得時間最好的時間複雜度T = O(n)。
   穩定性屬於穩定的排序。

3. 代碼   

void bubble_sort(int array[], int len) {
  for(int i=0; i<len-1; i++) {
    bool sorted = true;
    for(int j=len-1; j>i; j--) {
      if(array[j] < array[j-1]) {
        sorted = false;
        swap(array[j], array[j-1]); 
      }
    }
    if(sorted == true) 
      break;
  }
}

4. 參考資料

    維基百科-冒泡排序   http://en.wikipedia.org/wiki/Bubble_sort   

聯繫我們

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