通俗易懂的讓你徹底搞懂氣泡排序的由來

2021-08-10 16:35:35 字數 1098 閱讀 3350

先上圖:

氣泡排序是屬於簡單排序當中的,為什麼叫氣泡排序呢,

假如我們把我們的元素用泡泡去比喻,那麼資料不同,泡泡就不同大小。

假如我們想把資料從小到大排序,那麼在排序的過程中小泡泡會慢慢往上被交換出來也叫冒上來。

分析冒泡過程:

既然氣泡排序就是元素不斷交換的過程,那麼我們圖中假如有5個泡泡,那麼我們假如開始第一趟冒泡比較,第乙個泡和第二個泡比較大小,大的泡泡會放在下面的位置,那麼就有2個可能,要麼小泡往上冒,要麼不動,那麼我一直2 個相鄰的泡泡進行大小比較,出現下面的泡小就往上冒,那麼比到最後乙個泡就結束了第一趟過程,這樣我們的最後乙個泡泡就是最大的。 接下來我們就需要把剩餘的4個泡繼續上面過程,我們知道冒一趟就找到乙個最大的放他對應的位置,那麼就5個泡,我們假如冒了4趟後最大的4個泡泡就已經在最下面。那麼第乙個泡泡是不是最小的呢,肯定是,因此我們知道了需要冒泡的回合數就是泡泡數-1.

現在我們來具體上**:

//氣泡排序

//引數a 把需要的陣列給我,以及陣列的元素個數也給我 我將給你乙個有序的陣列

void bubble_sort(elementtype a, int n)

}//第一趟比較完後開始跑後面** 這個時候我們就可以了解是不是換過元素

//開始判斷標誌 來了解元素是不是早就有序

if(flag == 0)

}}排序時間複雜度分析:最壞的情況就是我們執行完第一趟就發現已經序,這個時候我們僅僅是和這個n也就是元素的多少有關。時間複雜度為0(n)

最壞情況: 每一趟是時間複雜度是n 進行了n - 1趟。 那麼最終是n*(n - 1) 時間複雜度則為0(n^2)

注意:請學習思路,不要用我的**,我**是直接在部落格手寫的,沒有去vs上寫,我希望分享的思想是,程式**於生活。用現實去架構**思想,我相信你進步很大。具體**實現如果不是按照直接思想寫出來的,我想對你們意義並不大。有什麼問題可以直接提出。

我不保證**的正確性,千萬別想著轉殖我的直接執行成功就完事,這樣可能對你們沒有多少好處,實現**其實很多。

氣泡排序 通俗易懂

氣泡排序是一種簡單的排序演算法,它也是一種穩定排序演算法。其實現原理是重複走訪過要排序的元素列,依次比較兩個相鄰的元素,如果當該對元素順序不正確時進行交換過來。一直重複這個過程,直到沒有任何兩個相鄰元素可以交換,就表明完成了排序。注意 一般情況下,稱某個排序演算法穩定 指的是當待排序序列中有相同的元...

排序演算法 史上最通俗易懂的 選擇排序 詳解

從待排序的n個資料中,每一趟在n i 1個元素中選擇值最小的元素作為有序序列中的第i個元素,從而達到排序的目的。簡單說就是 第一趟 在n個元素中選擇最小的元素與待排序數列的第乙個元素交換第二趟 在第2 n個元素中選擇最小的元素與待排序數列的第二個元素交換第三趟 在第3 n個元素中選擇最小的元素與待排...

通俗易懂 徹底搞清Mysql事務的四種隔離級別

上網找資料學習,過多的專業術語讓人看得頭大難以專注持久閱讀,本人想總結一篇部落格讓自己永遠記住這些概念,廢話不多說,通俗易懂 並茂來徹底理解四種事務隔離級別 讀未提交 read uncommitted 不可重複讀 read committed 可重複讀 repeatable read 序列化 ser...