冒泡排序(C++實現)

冒泡排序簡介:

  • 冒泡排序是一種比較簡單的排序算法,根據一個序列,比較兩個元素,如果順序不對就交換。
  • 然后依次遍歷n個點,一次找出一個最大(最小)值,進行n次,完成排序。

代碼實現

基礎冒泡排序

#include<iostream>
using namespace std;
int main()
{
    int a[9] = {1,9,2,5,8,3,7,4,6};
    int i,j;
    for(i=0;i<9;i++)
    {
        for(j=8;j>i;j--)
        {
            if(a[j-1] < a[j])
            {
                int temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
            }
        }
    }
    for(int i=0;i<9;i++)
        cout << a[i] << " ";
    return 0;
}

這種冒泡排序無論如何都要執行兩層循環,因此無論最優最差時間復雜度均為O(n^2)。

改良版冒泡排序

  • 設置flag,如果上一次有交換,那么設為true,如果沒有交換,說明排序已完成,設為false,此時最優時間復雜度為O(n)(即排序一次就知道不用排了)
//只完成一輪循環的冒泡排序
#include<iostream>
using namespace std;
int main()
{
    int a[9] = {9,8,7,6,5,4,3,1,2};
    int i,j;
    for(i=0;i<9;i++)
    {
        bool flag = false;
        for(j=8;j>i;j--)
        {
            if(a[j-1] < a[j])
            {
                int temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
                flag = true;
            }
        }
        if(flag == false)
            break;
    }
    for(int i=0;i<9;i++)
        cout << a[i] << " ";
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 該系列文章主要是記錄下自己暑假這段時間的學習筆記,暑期也在實習,抽空學了很多,每個方面的知識我都會另起一篇博客去記...
    Yanci516閱讀 12,282評論 6 19
  • 概述排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的...
    Luc_閱讀 2,308評論 0 35
  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,222評論 0 52
  • 這是我2016年給自己打卡的計劃。 每天還想著要提醒自己完成,而實際則是鈴鐺一響,順手按掉,改干嘛干嘛。 本打算一...
    puppyyang閱讀 379評論 0 0
  • 絕對不允許別人隨便對待你,那怕是你做的不對。
    蜜芽生活閱讀 99評論 0 0