91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析圖解算法之冒泡排序

Linux愛好者 ? 來源:小K算法 ? 作者:小K算法 ? 2021-06-08 16:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

從首位置開始,依次比較前后兩個(gè)數(shù),如果前面的數(shù)比后面的數(shù)大,就交換兩個(gè)數(shù)。這樣第1輪結(jié)束后,最大的數(shù)就會(huì)移動(dòng)到最后的位置。對(duì)剩余元素重復(fù)執(zhí)行N-1次,整個(gè)數(shù)組有序。因?yàn)橄窨諝馍细〉剿?,最大的元素?huì)慢慢浮到最后,所以冒泡因此得名。

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

3.2 第2輪 第2輪接著對(duì)前面剩余的N-1個(gè)元素重復(fù)上面步驟,第2大的元素歸位。

3.3 第3輪 第3輪對(duì)前面剩余的N-2個(gè)元素重復(fù)上面步驟,第3大的元素歸位。 總共執(zhí)行N-1次操作,所有元素歸位。

3.4 代碼實(shí)現(xiàn)

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 問題及優(yōu)化

4.1 迭代輪次優(yōu)化 如果原數(shù)組為如下情況,那么在執(zhí)行完第1輪后,整個(gè)數(shù)組已經(jīng)有序,后面的輪次沒必要執(zhí)行,可以針對(duì)這種情況做一次優(yōu)化改進(jìn)。 改進(jìn)點(diǎn)1: 如果某一輪沒有發(fā)生過交換,說明數(shù)組已經(jīng)有序,那么以后也不會(huì)發(fā)生交換,此時(shí)可以終止迭代。 代碼實(shí)現(xiàn)

for (int i = 0; i 《 n - 1; ++i) { // flag標(biāo)記是否有交換 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 掃描范圍優(yōu)化 如果為以下情況,我們會(huì)發(fā)現(xiàn)最后的6和8所處的位置和最終排序完成的位置一樣,說明過程中他們的位置不會(huì)發(fā)生變化。 上一輪最后交換的位置,在下一輪時(shí),此位置后面的數(shù)也不會(huì)再發(fā)生交換。 改進(jìn)點(diǎn)2: 記錄每一次最后發(fā)生交換的位置,下一輪只需要掃描到此位置的前一個(gè)即可。 代碼實(shí)現(xiàn)

// 記錄最后交換的位置 int position = 0; int len = n - 1; for (int i = 0; i 《 n - 1; ++i) { // flag標(biāo)記是否有交換 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 總結(jié)

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7335

    瀏覽量

    94801
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    74001

原文標(biāo)題:圖解算法:冒泡排序

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MAX16041/MAX16042/MAX16043:多電壓監(jiān)控與排序電路的理想

    MAX16041/MAX16042/MAX16043:多電壓監(jiān)控與排序電路的理想選 在電子設(shè)計(jì)領(lǐng)域,對(duì)于多電壓系統(tǒng)的監(jiān)控和排序是一個(gè)關(guān)鍵環(huán)節(jié)。Maxim Integrated推出的MAX16041
    的頭像 發(fā)表于 03-02 09:15 ?76次閱讀

    深入剖析 MAX6880–MAX6883:多電壓電源排序與監(jiān)控的理想

    深入剖析 MAX6880–MAX6883:多電壓電源排序與監(jiān)控的理想選 在電子系統(tǒng)設(shè)計(jì)中,多電壓電源的有序供電和穩(wěn)定監(jiān)控至關(guān)重要。MAXIM 推出的 MAX6880–MAX6883 系列雙/三電壓
    的頭像 發(fā)表于 02-28 17:10 ?944次閱讀

    MAX6819/MAX6820:SOT23封裝電源排序器的卓越

    MAX6819/MAX6820:SOT23封裝電源排序器的卓越選 在電子設(shè)計(jì)領(lǐng)域,電源管理是確保系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵環(huán)節(jié)。對(duì)于雙電壓微處理器和多電壓系統(tǒng)而言,電源的正確排序尤為重要。今天,我們就來
    的頭像 發(fā)表于 02-28 17:05 ?548次閱讀

    深入剖析ADM1067:多功能電源監(jiān)控與排序芯片的卓越

    深入剖析ADM1067:多功能電源監(jiān)控與排序芯片的卓越選 在電子系統(tǒng)設(shè)計(jì)中,對(duì)于多電源系統(tǒng)的監(jiān)控和排序需求日益增長(zhǎng)。ADM1067作為一款可配置的監(jiān)控/排序設(shè)備,為多電源系統(tǒng)的電源監(jiān)
    的頭像 發(fā)表于 02-28 14:05 ?106次閱讀

    探秘ADM1168:多功能電源監(jiān)控與排序芯片的卓越

    探秘ADM1168:多功能電源監(jiān)控與排序芯片的卓越選 引言 在當(dāng)今復(fù)雜的電子系統(tǒng)中,電源管理和監(jiān)控至關(guān)重要。ADM1168作為一款多功能的電源監(jiān)控與排序芯片,為工程師們提供了強(qiáng)大而靈活的解決方案
    的頭像 發(fā)表于 02-28 11:10 ?156次閱讀

    LM3880-Q1:汽車級(jí)電源排序器的卓越

    LM3880-Q1:汽車級(jí)電源排序器的卓越選 引言 在電子設(shè)備的設(shè)計(jì)中,電源的正確排序對(duì)于系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。特別是在汽車等對(duì)安全性和穩(wěn)定性要求極高的領(lǐng)域,一款合適的電源排序
    的頭像 發(fā)表于 02-26 17:10 ?471次閱讀

    德州儀器UCD9090A:10軌電源排序與監(jiān)控的理想

    德州儀器UCD9090A:10軌電源排序與監(jiān)控的理想選 在電子系統(tǒng)設(shè)計(jì)中,對(duì)于多電壓軌的電源管理和監(jiān)控是一個(gè)關(guān)鍵挑戰(zhàn)。德州儀器(TI)的UCD9090A 10軌電源排序器和監(jiān)控器,為解決這一
    的頭像 發(fā)表于 02-26 16:25 ?93次閱讀

    深度解析TPS38700S-Q1:多通道電源排序器的卓越

    深度解析TPS38700S-Q1:多通道電源排序器的卓越選 在電子設(shè)計(jì)領(lǐng)域,電源管理和排序對(duì)于確保系統(tǒng)的穩(wěn)定運(yùn)行至關(guān)重要。特別是在復(fù)雜的系統(tǒng)中,如先進(jìn)駕駛輔助系統(tǒng)(ADAS)、汽車攝像頭模塊
    的頭像 發(fā)表于 02-26 16:20 ?86次閱讀

    MAX16050/MAX16051:具備反向排序功能的電壓監(jiān)控與排序電路

    MAX16050/MAX16051:具備反向排序功能的電壓監(jiān)控與排序電路 在電子系統(tǒng)設(shè)計(jì)中,對(duì)電源電壓的精確監(jiān)控和有序控制至關(guān)重要。Maxim Integrated推出的MAX16050
    的頭像 發(fā)表于 01-31 17:15 ?791次閱讀

    里可以添加本文要記錄的大

    。本文講解不同算法進(jìn)行從小到大的升序排列的過程。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 一、冒泡排序 示例:冒泡排序(bubble
    發(fā)表于 01-27 22:05

    C語言插入排序算法和代碼

    插入排序排序算法的一種,它不改變?cè)械男蛄?數(shù)組),而是創(chuàng)建一個(gè)新的序列,在新序列上進(jìn)行操作。   這里以從小到大排序為例進(jìn)行講解。   基本思想及舉例說明   插入
    發(fā)表于 01-15 06:44

    光纖線芯都是按照什么顏色排序

    多次有朋友留言問到,光纖熔接顏色如何排序,這個(gè)在實(shí)際應(yīng)用中還是比較多的,那么今天我們就不講原理了,直接用圖文簡(jiǎn)單明了講光纖熔接色譜,大家可以了解下。 一、常規(guī)排序 1、4芯的排序:藍(lán)、橙、綠、棕
    的頭像 發(fā)表于 12-19 11:02 ?1448次閱讀

    C語言的常見算法

    # C語言常見算法 C語言中常用的算法可以分為以下幾大類: ## 1. 排序算法 ### 冒泡排序
    發(fā)表于 11-24 08:29

    圖解單片機(jī)功能與應(yīng)用(完整版)

    過程通道圖解、單片機(jī)顯示電路圖解、51單片機(jī)按鍵識(shí)別電路圖解、51單片機(jī)常用算法圖解、單片機(jī)常用電路圖解
    發(fā)表于 06-16 16:52

    PCB封裝圖解

    PCB封裝圖解——詳細(xì)介紹了各種封裝的具體參數(shù),并介紹了如何進(jìn)行封裝制作 純分享貼,有需要可以直接下載附件獲取文檔! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~)
    發(fā)表于 04-22 13:44