在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

淺析圖解算法之冒泡排序

Linux愛好者 ? 來源:小K算法 ? 作者:小K算法 ? 2021-06-08 16:43 ? 次閱讀

03 冒泡排序 為描述方便,用下面的數組模擬小朋友的交換過程。 核心思想(升序):

從首位置開始,依次比較前后兩個數,如果前面的數比后面的數大,就交換兩個數。這樣第1輪結束后,最大的數就會移動到最后的位置。對剩余元素重復執行N-1次,整個數組有序。因為像空氣上浮到水面,最大的元素會慢慢浮到最后,所以冒泡因此得名。

3.1 第1輪 執行完成后,最大的元素歸位。

3.2 第2輪 第2輪接著對前面剩余的N-1個元素重復上面步驟,第2大的元素歸位。

3.3 第3輪 第3輪對前面剩余的N-2個元素重復上面步驟,第3大的元素歸位。 總共執行N-1次操作,所有元素歸位。

3.4 代碼實現

for (int i = 0; i 《 n - 1; ++i) { for (int j = 0; j 《 n - i - 1; ++j) { if (a[j] 》 a[j + 1]) { swap(a[j], a[j + 1]); } } } 04 問題及優化

4.1 迭代輪次優化 如果原數組為如下情況,那么在執行完第1輪后,整個數組已經有序,后面的輪次沒必要執行,可以針對這種情況做一次優化改進。 改進點1: 如果某一輪沒有發生過交換,說明數組已經有序,那么以后也不會發生交換,此時可以終止迭代。 代碼實現

for (int i = 0; i 《 n - 1; ++i) { // flag標記是否有交換 bool flag = true; for (int j = 0; j 《 n - i - 1; ++j) { if (a[j] 》 a[j + 1]) { swap(a[j], a[j + 1]); flag = false; } } if (flag) { break; } }

4.2 掃描范圍優化 如果為以下情況,我們會發現最后的6和8所處的位置和最終排序完成的位置一樣,說明過程中他們的位置不會發生變化。 上一輪最后交換的位置,在下一輪時,此位置后面的數也不會再發生交換。 改進點2: 記錄每一次最后發生交換的位置,下一輪只需要掃描到此位置的前一個即可。 代碼實現

// 記錄最后交換的位置 int position = 0; int len = n - 1; for (int i = 0; i 《 n - 1; ++i) { // flag標記是否有交換 bool flag = true; for (int j = 0; j 《 len; ++j) { if (a[j] 》 a[j + 1]) { swap(a[j], a[j + 1]); flag = false; position = j; } } len = position; if (flag) { break; } }

05 總結

冒泡排序是比較簡單的一種排序算法,核心思想就是比較相鄰的兩個數,但效率比較低所以可做一些優化。時間復雜度為O(N^2),數據規模較小時可采用,但數據過大時就不建議采用冒泡了。

編輯:jq

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

    關注

    8

    文章

    7145

    瀏覽量

    89593
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69064

原文標題:圖解算法:冒泡排序

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    詳解Linux sort命令掌握排序技巧與實用案例

    在linux系統使用過程中,提供了sort排序命令,支持常用的排序功能。 常用參數 sort命令支持很多參數,常用參數如下: ? 短參數 長參數 說明 -n – number-sort 按字符串數值
    的頭像 發表于 01-09 10:10 ?227次閱讀

    TimSort:一個在標準函數庫中廣泛使用的排序算法

    在計算機科學的領域,排序算法是每位學生必學的基礎,而排序的需求是每位程序員在編程過程中都會遇到的。 在你輕松調用 .sort() 方法對數據進行排序時,是否曾好奇過,這個簡單的方法背后
    的頭像 發表于 01-03 11:42 ?126次閱讀

    技術科普 | 芯片設計中的LEF文件淺析

    技術科普 | 芯片設計中的LEF文件淺析
    的頭像 發表于 11-13 01:03 ?359次閱讀
    技術科普 | 芯片設計中的LEF文件<b class='flag-5'>淺析</b>

    時間復雜度為 O(n^2) 的排序算法

    作者:京東保險 王奕龍 對于小規模數據,我們可以選用時間復雜度為 O(n2) 的排序算法。因為時間復雜度并不代表實際代碼的執行時間,它省去了低階、系數和常數,僅代表的增長趨勢,所以在小規模數據情況下
    的頭像 發表于 10-19 16:31 ?1252次閱讀
    時間復雜度為 O(n^2) 的<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    TPS54120排序和跟蹤

    電子發燒友網站提供《TPS54120排序和跟蹤.pdf》資料免費下載
    發表于 10-10 10:54 ?0次下載
    TPS54120<b class='flag-5'>排序</b>和跟蹤

    FPGA設計經驗圖像處理

    今天和大俠簡單聊一聊基于FPGA的圖像處理,之前也和各位大俠聊過相關的圖像處理,這里面也超鏈接了幾篇,具體如下: 圖像邊緣檢測算法體驗步驟(Photoshop,Matlab)算法
    發表于 06-12 16:26

    手把手教你排序算法怎么寫

    今天以直接插入排序算法,給大家分享一下排序算法的實現思路,主要包含以下部分內容:插入排序介紹插入排序
    的頭像 發表于 06-04 08:03 ?777次閱讀
    手把手教你<b class='flag-5'>排序</b><b class='flag-5'>算法</b>怎么寫

    STM32F4用來作為計算單元的時候,如何評估算法或應用的時間性能?

    STM32F4用來作為計算單元的時候,如何評估算法或應用的時間性能?能不能通過配置使具備計時功能?精度達到us級別就足夠了。 關于計時,在debug狀態下,通過states的計數值可以計算時間性能,但必須是debug設置斷點,如果是系統實時應用,有沒有別的辦法?
    發表于 05-16 06:37

    淺析FreeRTOS任務調度器的三種調度算法和應用

    FreeRTOS在MCU領域應用非常廣泛,今天就給大家講解一下FreeRTOS調度器中的三種調度算法,以及在瑞薩RZ/T2L MPU中的應用。
    的頭像 發表于 05-10 14:02 ?7828次閱讀
    <b class='flag-5'>淺析</b>FreeRTOS任務調度器的三種調度<b class='flag-5'>算法</b>和應用

    音箱制作過程圖解

    電子發燒友網站提供《音箱制作過程圖解.doc》資料免費下載
    發表于 04-28 09:27 ?11次下載

    支持 ACPI 的 10 軌電源排序器和監視器UCD9090A數據表

    電子發燒友網站提供《支持 ACPI 的 10 軌電源排序器和監視器UCD9090A數據表.pdf》資料免費下載
    發表于 03-29 09:12 ?0次下載
    支持 ACPI 的 10 軌電源<b class='flag-5'>排序</b>器和監視器UCD9090A數據表

    用FPGA實現雙調排序的方法(2)

    典型的排序算法包括冒泡排序、選擇排序、插入排序、歸并排序
    的頭像 發表于 03-21 10:28 ?684次閱讀
    用FPGA實現雙調<b class='flag-5'>排序</b>的方法(2)

    FPGA實現雙調排序算法的探索與實踐

    雙調排序(BitonicSort)是數據獨立(Data-independent)的排序算法,即比較順序與數據無關,特別適合并行執行。在了解雙調排序
    發表于 03-14 09:50 ?710次閱讀
    FPGA實現雙調<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索與實踐

    想聽聽48和大對數光纜的排序

    48芯光纜和大對數光纜都是光纜中的一種,它們的區別在于芯數不同。48芯光纜指的是光纜中包含48根光纖,而大對數光纜則是指光纜中芯數超過了48芯。 在實際的光纜應用中,不同芯數的光纜需要進行不同的排序
    的頭像 發表于 03-12 10:44 ?706次閱讀

    C語言實現經典排序算法概覽

    冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序(如從大到小、首字
    的頭像 發表于 02-25 12:27 ?485次閱讀
    C語言實現經典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概覽
    主站蜘蛛池模板: 亚洲 欧美 动漫 | 日本三级理论片 | 久久久久久久久综合影视网 | 四虎影院在线观看免费 | 人人艹人人射 | 丁香婷婷在线 | 韩国三级hd中文字幕好大 | 午夜剧场毛片 | 5x视频在线观看 | 91九色在线视频 | 色婷婷网| 亚洲精品久久久久久久蜜桃 | 性欧美护士18xxxxhd视频 | 轻点灬大ji巴太粗太长了啊h | 国产男人搡女人免费视频 | 最新毛片网 | 国产一级做a爱免费观看 | 天天干夜夜拍 | 男女视频在线观看 | 日本免费观看网站 | 亚洲午夜精品久久久久 | 国产欧美一区二区三区观看 | 国产香蕉久久精品综合网 | 黄色成人一级片 | 久久久噜久噜久久gif动图 | 日韩欧美高清色码 | 四虎影城库 | 国产欧美日韩haodiaose | 欧美一区二区三区在线 | 天天插天天插 | 黄色日本网站 | 性视频亚洲| 精品女视频在线观看免费 | 五月婷婷一区二区 | 2022国产情侣真实露脸在线 | 亚洲免费成人网 | 日本a级精品一区二区三区 日本a级特黄三级三级三级 | 波多野结衣在线网站 | 久久精品乱子伦免费 | 欧美成人性色区 | 女同性进行性行为视频 |