十大經典排序演算法之氣泡排序

xdak發表於2019-05-31

【氣泡排序】(Bubble Sort

a)       原理

氣泡排序是最簡單的排序演算法。它依次比較相鄰的兩個元素,如果它們的順序錯誤就把它們交換過來,它重複的查詢所要排序的數列。查詢數列的工作直到不需要再進行交換元素即停止。排序過程中越小的元素經過交換依次冒泡浮島數列的始端,由此得名冒泡。

b)       演示動態圖

 

c)        演算法步驟

l  比較相鄰元素。如果前者比後者大,則進行交換;

l  依次查詢數列中相鄰元素,並進行比較,因此,一輪查詢後,最大元素位於末端;

l  針對剩餘數列元素重複上述查詢比較工作;

l  重複上述步驟,直到數列排序完成。

d)       程式碼實現

#include <iostream>
using namespace std;
//函式宣告
void BubbleSort(int[],int);//氣泡排序
void ShowArray(int[],int);//列印

//主函式
int main()
{
    int array_a[] = {5,6,8,2,4,62,31,58,94,50,16};
    int len = sizeof(array_a)/sizeof(array_a[0]);
    //列印陣列
    cout << "原始陣列: ";
    ShowArray(array_a,len);

    //1-氣泡排序
    BubbleSort(array_a,len);
    //列印陣列
    cout << "【冒泡】排序後陣列: ";
    ShowArray(array_a,len);

    return 0;
}
//函式實現之列印陣列
void ShowArray(int array_a[],int len)
{

    for(int i=0;i<len;i++)
    {
        cout << array_a[i] << "  ";
    }
    cout << endl;
}
//函式實現之氣泡排序:分為外層和內層;
void BubbleSort(int array_a[],int len)
{
    for (int i=0;i<len-1;i++) //外層控制比較的輪數;
    {
        for (int j=0;j<len-i-1;j++)//內層控制每輪比較的次數;
        {
            if (array_a[j]>array_a[j+1])
            {
                int temp;
                temp = array_a[j];
                array_a[j] = array_a[j+1];
                array_a[j+1] = temp;
            }
        }
    }
}

 

參考部落格:https://www.cnblogs.com/onepixel/articles/7674659.html,再次感謝!

相關文章