最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)雙向起泡排序算法

 更新時間:2022年11月09日 15:41:31   作者:學(xué)得放不下  
這篇文章主要為大家詳細(xì)介紹了如何利用C++實現(xiàn)雙向起泡排序算法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以嘗試一下

起泡排序的基本思想

起泡排序易于冒泡排序算法合并,即向后推出最大數(shù)。將被排序的記錄數(shù)組R[1..n]垂直排列,每個記錄R[i]看作是重量為R[i]的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R:凡掃描到違反本原則的輕氣泡,就使其向上“飄浮”。如此反復(fù)進(jìn)行,直到最后任何兩個氣泡都是輕者在上,重者在下為止。一般地,第i遍處理時,不必檢查第i個位置以上的元素,因為經(jīng)過前面i-1遍的處理,它們已正確地排好序。即就是在一組待排序的數(shù)據(jù)中,兩兩比較數(shù)據(jù)的大小,發(fā)現(xiàn)兩個記錄的排序次序相反時就交換位置,直到?jīng)]有反序的記錄為止。也就是說它重復(fù)地走訪過要排序的序列,一次比較兩個項目,如果他們的順序錯誤就把他們交換過來。走訪序列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要做交換動作,該序列已經(jīng)排序完成。一趟冒泡,至少可以把值最大的元素送到最后位置(或最上邊);當(dāng)然也可以倒過來做,把值小的元素向前移或向下移,一趟冒泡,至少可以把值最小的元素送到最前面的位置(或最下邊)。

雙向起泡排序?qū)崿F(xiàn)如下

#include<iostream>
using namespace std;

// 交換兩個數(shù)
void swap(int &i, int &j)
{
    int t = i;
    i = j;
    j = t;
}

// 打印數(shù)組
void show(int a[], int n)
{
    for(int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
}

// 雙向起泡排序
void bubblesort(int a[], int n)
{
    int low = 0, high = n-1;
    bool flag = true;

    while(low < high && flag)
    {   
        flag = false;

        show(a, 10);
        int i = low;
        while(i < high)
        {
            if(a[i] > a[i + 1])
            {
                swap(a[i], a[i + 1]);
                flag = true;
            }
            i++;
        }
        high--;
        
        int j = high;
        while(j > low)
        {
            if(a[j] < a[j-1])
            {
                swap(a[j-1], a[j]);
                flag = true;
            }
            j--;
        }
        low++;
    }
}

int main(){
    int a[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    int n = 10;

    // 輸出初始狀態(tài)
    // show(a, n);

    // 雙向冒泡排序
    bubblesort(a, n);

    // 排序后輸出
    cout << "after sort" << endl;
    show(a, n);

}

代碼中示例的輸出為:

10 9 8 7 6 5 4 3 2 1 
1 9 8 7 6 5 4 3 2 10 
1 2 8 7 6 5 4 3 9 10
1 2 3 7 6 5 4 8 9 10
1 2 3 4 6 5 7 8 9 10
after sort
1 2 3 4 5 6 7 8 9 10

以上就是C++實現(xiàn)雙向起泡排序算法的詳細(xì)內(nèi)容,更多關(guān)于C++雙向起泡排序的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c語言實現(xiàn)系統(tǒng)時間校正工具代碼分享

    c語言實現(xiàn)系統(tǒng)時間校正工具代碼分享

    這篇文章主要介紹了c語言實現(xiàn)系統(tǒng)時間校正工具,大家參考使用吧
    2014-01-01
  • C++深入分析數(shù)據(jù)在內(nèi)存中的存儲形態(tài)

    C++深入分析數(shù)據(jù)在內(nèi)存中的存儲形態(tài)

    使用編程語言進(jìn)行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么
    2023-01-01
  • Qt 進(jìn)度條的實現(xiàn)示例

    Qt 進(jìn)度條的實現(xiàn)示例

    進(jìn)度條在很多時候都可以用到,有時我們需要在表格,樹狀欄中直觀顯示任務(wù)進(jìn)度或消耗百分比,本文就詳細(xì)的介紹一下Qt 進(jìn)度條的使用實例,感興趣的可以了解一下
    2021-06-06
  • C語言位圖及位圖的實現(xiàn)

    C語言位圖及位圖的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了C語言位圖及位圖的實現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++設(shè)計模式之裝飾模式

    C++設(shè)計模式之裝飾模式

    這篇文章主要介紹了C++設(shè)計模式之裝飾模式,裝飾模式能夠?qū)崿F(xiàn)動態(tài)的為對象添加功能,是從一個對象外部來給對象添加功能,需要的朋友可以參考下
    2014-10-10
  • 淺談關(guān)于指針作為參數(shù)并改變它的值的問題

    淺談關(guān)于指針作為參數(shù)并改變它的值的問題

    這篇文章介紹了關(guān)于指針作為參數(shù)并改變它的值的問題,有需要的朋友可以參考一下
    2013-10-10
  • C++ new與malloc和delete及free動態(tài)內(nèi)存管理及區(qū)別介紹

    C++ new與malloc和delete及free動態(tài)內(nèi)存管理及區(qū)別介紹

    這篇文章主要介紹了深入理解C++中的new/delete和malloc/free動態(tài)內(nèi)存管理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • C++中的boost::function庫簡介

    C++中的boost::function庫簡介

    這篇文章介紹了C++中的boost::function庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Linux中使用C語言實現(xiàn)基于UDP協(xié)議的Socket通信示例

    Linux中使用C語言實現(xiàn)基于UDP協(xié)議的Socket通信示例

    這篇文章主要介紹了Linux中使用C語言實現(xiàn)基于UDP協(xié)議的socket通信示例,服務(wù)器端與客戶端的功能都非?;A(chǔ),需要的朋友可以參考下
    2016-03-03
  • c語言實現(xiàn)足球比賽積分統(tǒng)計系統(tǒng)

    c語言實現(xiàn)足球比賽積分統(tǒng)計系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了c語言實現(xiàn)足球比賽積分統(tǒng)計系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論

施秉县| 游戏| 章丘市| 交口县| 泸西县| 景宁| 桂林市| 砚山县| 会泽县| 巫山县| 谢通门县| 元氏县| 昭苏县| 客服| 广汉市| 丹江口市| 涟水县| 洞头县| 云龙县| 婺源县| 治多县| 台江县| 辽宁省| 綦江县| 宜城市| 富蕴县| 泸州市| 科尔| 福泉市| 茶陵县| 怀柔区| 湖北省| 皮山县| 乐昌市| 临泽县| 潍坊市| 新疆| 扎赉特旗| 昌都县| 木里| 石台县|