C C 七大排序演算法 之 「氣泡排序」

2021-10-07 13:03:32 字數 1775 閱讀 2021

排序:即將一組混亂的資料按從小到大或者從大到小的順序進行有序的排列出來。

氣泡排序演算法**:

思路解答:

從第乙個資料開始,與其後乙個資料進行比較,如果後面的資料比他小,則它兩互相交換位置;然後再從第二個資料開始,與其後乙個資料進行比交,如果後面的資料比他小,則它兩互相交換位置;然後再從第三個資料開始…;如果有遇到後面的資料比它還要大的,則無需交換。

時間複雜度:o(n2)

**實現:

void

bubblesort

(int

*arr,

int len)}}

}

上面的**是實現冒泡演算法的一種方式,當然也還有特殊情況下效率高的演算法。

例如需要將這一堆資料進行排序:

深色的表示已經排好序了,後續就不需要再進行比較了!

第一次排序:154, 155, 157, 162, 159, 160, 161, 171,174

第二次排序:154, 155, 157, 159, 160, 161, 162,171, 174

第三次排序:154, 155, 157, 159, 160, 161, 162, 171, 174

可以看出,特殊情況,排序兩次後就排好序了,所以我們再第三次排序確認沒有資料再進行交換後,就說明這一組資料是已經排好序的了,就可以結束迴圈了!

改進後的氣泡排序演算法**:

void

bubblesort

(int

* arr,

int len)}if

(sorted)

break

;// 為真時,說明迴圈一輪後,沒有執行交換操作,即已經排好序了,直接結束迴圈

}}

此時,演算法效率就大大提高了!!!全部**實現:

#include

#include

using

namespace std;

void

bubblesort

(int

* arr,

int len)}if

(sorted)

break

;// 為真時,說明迴圈一輪後,沒有執行交換操作,即已經排好序了,直接結束迴圈}}

intmain

(void);

// 計算陣列的元素個數

int len =

sizeof

(beauties)

/sizeof

(beauties[0]

);bubblesort

(beauties, len)

;for

(int i =

0; i < len; i++

) cout << endl;

system

("pause");

return0;

}

七大排序演算法之氣泡排序

演算法筆記 排序演算法,氣泡排序,c 實現 氣泡排序是七大排序演算法中較為簡單的乙個,它的時間複雜度為o n 2 相較於快速排序,它的耗時較長,但是不會帶來額外的空間開銷 快速排序對棧的需求 因此它適用於資料量較小且對時間要求不高的業務,然而在實際使用過程中,幾乎遇不到這種情況,所以氣泡排序極少被使...

七大排序演算法之氣泡排序

感覺雖然學了這麼久的程式設計,但是越發感覺自己程式設計的思維沒有達到理想中的效果,於是決定整理一下常見的七大排序演算法,雖然都很基礎,我也是這麼認為的,但是越是基礎的東西,吃透了之後,還是能有所收穫的,比如排序演算法,至少在需要的場合,能夠信手拈來,我覺得這是必須的。廢話不多說,先從最簡單的氣泡排序...

C C 七大排序演算法 快速排序

接上面的故事未完待續,除了歸併長老外,還有另外一位快速長老的快速 也是被小小桂子讚不絕口,大呼奇妙 這位快速長老的演算法思想時這樣的 1 每次選取第乙個數為基準 2 然後使用 乾坤大挪移 將大於和小於基準的元素分別放置於基準數兩邊 3 繼續分別對基準數兩側末端未排序的資料使用分治法進行細分處理,直至...