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

2021-07-26 11:16:42 字數 1254 閱讀 7473

@(演算法筆記)[排序演算法, 氣泡排序, c++實現]

氣泡排序是七大排序演算法中較為簡單的乙個,它的時間複雜度為o(n^2),相較於快速排序,它的耗時較長,但是不會帶來額外的空間開銷(快速排序對棧的需求),因此它適用於資料量較小且對時間要求不高的業務,然而在實際使用過程中,幾乎遇不到這種情況,所以氣泡排序極少被使用,但是作為乙個基礎的入門排序演算法,他的演算法思想還是十分值得我們去學習的。

氣泡排序的思想十分簡單,它是依據氣泡在水中不斷上浮的靈感設計出來的:每次氣泡排序都是從頭到尾,依次將緊挨著的兩個數進行比較,如果前者比後者大,就交換兩者的位置,否則不操作,直至末尾,比如先判斷第乙個和第二個的數,如果第乙個比第二個大,就將兩者交換,再接著判斷第二個和第三個,以此類推,這樣就達到了將最大的數放在最後面的效果,也就是將最大的數成功放在了它正確的位置上,之後再對前面的序列重複本操作,直到所有數都找到了自己正確的位置為止(正確的位置指的是排序之後它在序列中的位置)。

假設待排序的序列是:

5,8,4,2,7

第一輪操作:

5比8小,不交換:5,8,4,2,7

8比4大,要交換:5,4,8,2,7

8比2大,要交換:5,4,2,8,7

8比7大,要交換:5,4,2,7,8

第一輪操作結束,最後的數放在最後的位置上

第二輪操作:

5比4大,要交換:4,5,2,7,8

5比2大,要交換:4,2,5,7,8

5比7小,不交換:4,2,5,7,8

第二輪操作結束,這次操作不用處理最後的8,因為8已經找到了自己的位置

第三輪操作:

4比2大,要交換:2,4,5,7,8

4比5小,不交換:2,4,5,7,8

第三輪操作結束

第四輪操作:

2比4小,不交換:2,4,5,7,8

第四輪操作結束

氣泡排序結束

顯而易見,當待排序數列的長度為n的時候,我們需要進行n-1次操作,第m輪操作需要判斷n-m次,因為時間複雜度討論的是數量級的關係,所以氣泡排序的時間複雜度為o(n^2)。

#include 

using

namespace

std;

void bubblesort(int nums,int n)}}

}int main()

; bubblesort(nums, 5);

for(int i=0;i<5;i++)

cout

<}

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

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

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

排序 即將一組混亂的資料按從小到大或者從大到小的順序進行有序的排列出來。氣泡排序演算法 思路解答 從第乙個資料開始,與其後乙個資料進行比較,如果後面的資料比他小,則它兩互相交換位置 然後再從第二個資料開始,與其後乙個資料進行比交,如果後面的資料比他小,則它兩互相交換位置 然後再從第三個資料開始 如果...

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...