每日一演算法之氣泡排序原理及實現

2021-06-02 10:05:41 字數 1246 閱讀 8047

by zxy,qq群:168424095

氣泡排序基本原理:大泡在上,小泡在下

時間複雜度:o(n^2),不及堆排序、快速排序的o(nlogn,底數為2),

一路、二路歸併排序、不平衡二叉樹排序的速度均比氣泡排序快,且具有穩定性,速度不及堆排序、快速排序。

氣泡排序是經過n-1趟子排序完成的,第i趟子排序從第1個數至第n-i個數,若第i個數比後乙個數大(則公升序,小則降序)則交換兩數。

氣泡排序(bubblesort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。

即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。

在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),

將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),

第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。

如此下去,重複以上過程,直至最終完成排序。

用二重迴圈實現,外迴圈變數設為i,內迴圈變數設為j。外迴圈重複9次,內迴圈依次重複9,8,...,1次。

每次進行比較的兩個元素都是與內迴圈j有關的,它們可以分別用a[j]和a[j+1]標識,

i的值依次為1,2,...,9,對於每乙個i, j的值依次為1,2,...10-i.

#include

using namespace std;

int* bubblesort(int num,int* e);

int main()

cout << endl;

int* result=bubblesort(num,element);

cout << endl << "排序後的元素順序是:";

for(int i=0;i

cout <<  result[i] << " ";

}delete element;

cin.get();

cin.get();

return 0;

}int* bubblesort(int num,int* e)

}cout << "第" << i << "趟的排序結果:";

for(int r=0;r

cout << e[r] << "  ";

}cout << endl;

}return e;}

每日一演算法 》氣泡排序

氣泡排序定義 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端,故名。氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比...

每天一演算法 (氣泡排序)

一 原理 比較兩個相鄰的元素,將值大的元素交換至右端。二 思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全...

氣泡排序原理及實現

氣泡排序就是每次將重的泡泡下沉,輕的泡泡上浮。通過一次次反覆的操作,實現排序目的。下面看一下冒泡的實現 public class test bubblesort data for int i 0 isystem.out.print data i private static void bubbles...