0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

冒泡排序算法原理

電子工程師 ? 來源:lp ? 2019-03-29 16:57 ? 次閱讀

冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個項目進行掃描,比較相領兩個項目的大小,若發(fā)現違背大小次序則進行互換,由此可以使n個項目中的最大者換到最后。

然后對剩下的未排序好的項目再進行掃描,使它們的最大者換到表的最后。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃描以后,都縮短了待排序表的長度,如果在某次掃描過程中,沒有發(fā)現交換,則排序結束。

冒泡排序算法原理

1、從后往前依次比較相鄰的元素。若是要按照升序排序,則后面的元素比前面的小,就交換這2個元素;降序則相反。

2、對每一對相鄰元素作同樣的工作,從第一對到最后一對。進行一輪比較交換下來,最后的元素就會是最?。ɑ蜃畲螅┑臄盗?,這個數就不用參與后面的比較操作了。

3、針對所有的元素重復以上的步驟。

4、持續(xù)每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

為了盡量縮短待排序表的長度,避免下一次掃描中可能出現的不必要的比較,在每次掃描過程中,一方面要記錄進行元素交換的次數,另一方面要記住在本次掃描中的最后一次進行交換的位置。在這個位置以后沒有發(fā)生過交換,則說明在這個位置以后的元素實際上已經排好次序。

總的來說,冒泡法基本思想是重復的進行整個數組的排序,一次比較兩個元素(兩兩排序),如果它們順序不符合就交換,重復這樣直到數列沒有再需要交換的數為止(結束條件)。因為它就好像氣泡一樣,輕的氣泡會往上漂浮,在不斷漂浮的過程中,發(fā)生了兩兩交換過程,所以叫冒泡排序。

實例說明:

輸入:待排序表L(1:n)。

輸出:有序表L(1:n)。

PROCEDURELBUBSORT(L,N)

F←n

WHILEF>0DO

{k←F-1:F←0

FORj=1TOkDO

{IFL(j)>L(j+1)THEN

{L(j)與L(j+1)交換:F←j}

}

}

RETURN

在這個算法中,k代表在每次掃描過程中需要進行經較的項目數;當F>0時,表示還需要進行掃描比較,并且,它的數值表示上一次掃描中發(fā)生最后一次交換的位置。由上例可知,在最壞情況下,冒泡排序法需要進行n-1遍掃描,共要作[n(n-1)]/2次比較和元素的交換。但這個工作量并不是必需的,一般情況下要小于這個工作量。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 排序
    +關注

    關注

    0

    文章

    31

    瀏覽量

    9689
  • 排序算法
    +關注

    關注

    0

    文章

    51

    瀏覽量

    10042

原文標題:冒泡法排序

文章出處:【微信號:NeXt8060,微信公眾號:HALCON圖像處理與機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA排序-冒泡排序介紹

    排序算法是圖像處理中經常使用一種算法,常見的排序算法有插入排序、希爾
    發(fā)表于 07-17 10:12 ?963次閱讀
    FPGA<b class='flag-5'>排序</b>-<b class='flag-5'>冒泡</b><b class='flag-5'>排序</b>介紹

    數據結構與算法:[8.5.1]--冒泡排序算法(1)#硬聲創(chuàng)作季

    數據結構與算法
    學習硬聲知識
    發(fā)布于 :2022年12月25日 21:15:21

    數據結構與算法:[8.5.1]--冒泡排序算法(2)#硬聲創(chuàng)作季

    數據結構與算法
    學習硬聲知識
    發(fā)布于 :2022年12月25日 21:16:00

    數據結構與算法:[8.5.2]--冒泡排序算法舉例(1)#硬聲創(chuàng)作季

    數據結構與算法
    學習硬聲知識
    發(fā)布于 :2022年12月25日 21:16:26

    數據結構與算法:[8.5.2]--冒泡排序算法舉例(2)#硬聲創(chuàng)作季

    數據結構與算法
    學習硬聲知識
    發(fā)布于 :2022年12月25日 21:16:48

    Java面試指南21-上-冒泡排序算法分析

    JAVA
    電子學習
    發(fā)布于 :2023年01月16日 12:02:35

    冒泡排序

    package algorithms// 冒泡排序// 冒泡排序算法的運作如下:// 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
    發(fā)表于 10-17 19:03

    華為筆試題大全(史上最齊全)

    ?constructor函數不能聲明為虛函數。8.冒泡排序算法的時間復雜度是什么?時間復雜度是O(n^2)。9.寫出float x 與“零值”比較的if語句。if(x>0.000001&&x
    發(fā)表于 06-23 08:49

    華為筆試題大全分享

    都是平衡二叉樹 且左右子樹的深度差值的絕對值不大于1。6.堆棧溢出一般是由什么原因導致的?沒有回收垃圾資源。7.什么函數不能聲明為虛函數?constructor函數不能聲明為虛函數。8.冒泡排序算法
    發(fā)表于 07-01 18:26

    static的作用是什么

    ,是什么區(qū)別?什么是平衡二叉樹?堆棧溢出一般是由什么原因導致的?冒泡排序算法的時間復雜度是什么?什么函數不能聲明為虛函數?隊列和棧有什么區(qū)別?不能做switch()的參數類型局部變量能否和全局變量重名?如...
    發(fā)表于 10-27 06:22

    C語言冒泡、插入法、選擇排序算法分析

    C語言冒泡、插入法、選擇排序算法分析
    發(fā)表于 09-06 15:51 ?44次下載

    如何使用PIC單片機實現冒泡排序算法

    編寫子程序paixu,實現1Byte數的順序排列。待排序的10個二進制數(自定義數據大?。┐娣旁趦却婵臻g內。
    發(fā)表于 07-31 17:35 ?1次下載
    如何使用PIC單片機實現<b class='flag-5'>冒泡</b><b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    嵌入式面試常問問題

    ,是什么區(qū)別?什么是平衡二叉樹?堆棧溢出一般是由什么原因導致的?冒泡排序算法的時間復雜度是什么?什么函數不能聲明為虛函數?隊列和棧有什么區(qū)別?不能做switch()的參數類型局部變量能否和全局變量重名?如...
    發(fā)表于 10-20 13:36 ?1次下載
    嵌入式面試常問問題

    php版冒泡排序是如何實現的?

    無論學習哪一種編程語言,進行算法方面的訓練時都繞不開“排序”。排序在進階編程中有非常廣泛的應用,要想成為編程高手,排序算法是必須要掌握的。而
    的頭像 發(fā)表于 01-20 10:39 ?808次閱讀
    php版<b class='flag-5'>冒泡</b><b class='flag-5'>排序</b>是如何實現的?

    AI能幫我成為傳說中的10x工程師嗎?

    編程語言模型、代碼生成工具的出現,讓工程師們眼前一亮,不少開發(fā)者第一時間進行試用?,F階段的代碼生成工具,也遠遠不止自動補全,不僅可以編寫基礎的冒泡、排序算法、還可以寫單元測試、代碼注釋這些占用開發(fā)者很多時間的重復工作。
    的頭像 發(fā)表于 08-08 17:07 ?680次閱讀
    AI能幫我成為傳說中的10x工程師嗎?