【排序算法】⑤冒泡排序

系列文章目錄

?第一篇:【排序算法】①直接插入排序-CSDN博客

第二篇:【排序算法】②希爾排序-CSDN博客

第三篇:【排序算法】③直接選擇排序-CSDN博客

第四篇:【排序算法】④堆排序-CSDN博客

第五篇:【排序算法】⑤冒泡排序-CSDN博客

第六篇:【排序算法】⑥快速排序:Hoare、挖坑法、前后指針法-CSDN博客

第七篇:【排序算法】⑦歸并排序-CSDN博客


文章目錄

目錄

系列文章目錄

文章目錄

前言

一、冒泡排序是什么?

二、冒泡排序圖解

三、實現代碼

四、分析冒泡排序

總結



前言

冒泡排序屬于交換排序的一種。交換排序基本思想:所謂交換,就是按序列中兩個數據碼值的比較結果來決定是否對換這兩個數據在序列中的位置。

交換排序的特點是:將碼值大的向尾部移動,碼值小的往前移動

冒泡排序實現簡單,主要是為后續同屬于交換排序的快排做鋪墊,故本文篇幅較短。


一、冒泡排序是什么?

冒泡排序的基本思想

1. 比較相鄰的元素:首元素設從i=0開始,依次比較相鄰的兩個元素(j=i+1)。如果第一個比第二個大(升序排序),就交換它們。

2.?然后i不變,j++,循環直到 j 到達數組末尾,此時最后一個數據一定是該數據集最大的。

3. i++,重復上述步驟,直到遍歷完整個數組。

核心思想:重復遍歷數組,比較相鄰元素,如果順序錯誤就交換它們

排序過程:每輪遍歷會將當前最大的元素"冒泡"到正確位置,類似水中的氣泡上浮,因此得名。

二、冒泡排序圖解

設數組為int a[ ]={5,3,8,4,2},兩層循環,外層循環控制 i=0,內存控制 j=i+1,各自的循環結束時++,結束條件為到達數組末尾<n;

三、實現代碼

以升序為例,降序同理。

//冒泡排序
void BubbleSort(int* a, int n)
{if (!a)return;for (int i = 0; i < n; ++i){int Change = 1;for (int j = i + 1; j < n; ++j){if (a[i] > a[j]){swap(&a[i], &a[j]);Change = 0;}}//如果Change的值未變,則說明數組后續數據都有序if (Change)break;}
}void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}

break優化解釋:

如果在i=某值的一輪比較中,Change的值都未發生改變(即內循環沒有發生交換),說明后續數據都大于或等于a[i]且呈現遞增趨勢為有序狀態,故此時可以跳出循環,提前結束排序。

四、分析冒泡排序

冒泡排序的特性總結:
1. 冒泡排序是一種較容易理解的排序;
2. 時間復雜度:O(N^2),(若加上break優化,則較不優化平均快上3倍);
3. 空間復雜度:O(1)
4. 穩定性:穩定


總結

本文是【排序算法】系類第五篇,主要介紹什么是冒泡排序,以及如何實現冒泡排序,最后分析冒泡排序特性。

冒泡排序較為簡單,但它是為同為交換排序的“快速排序”做鋪墊,快速排序是當今實際代碼中最常使用的排序,也是本系列的重點所在。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93109.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用gpt進行模式微調(2)?

對 GPT&#xff08;Generative Pre-trained Transformer&#xff09;類大模型進行微調&#xff08;Fine-tuning&#xff09;&#xff0c;是將其適配到特定任務或領域的關鍵步驟。以下是 ??全流程指南??&#xff0c;涵蓋方法選擇、數據準備、訓練配置、評估部署等核心環節&a…

基于飛算JavaAI實現圖書管理系統框架部署

摘要 本文詳細介紹了如何利用飛算JavaAI技術實現圖書管理系統的框架部署。首先闡述了飛算JavaAI的基本概念、特點和優勢&#xff0c;接著對圖書管理系統的需求進行分析&#xff0c;然后按照軟件開發流程&#xff0c;從系統設計、代碼生成、框架搭建到部署測試&#xff0c;逐步展…

ODE-by-Matlab-01-人口增長模型

博客地址&#xff1a;Matlab微分方程01-模型 馬爾薩斯模型 馬爾薩斯模型是人口增長模型中最簡單的模型&#xff0c;它由英國牧師家馬爾薩斯在1798年提出。 他利用在教堂工作的機會&#xff0c;收集英國100多年的人口數據&#xff0c;發現人口的相對增長率是常數。 在這個基礎…

云原生環境 Prometheus 企業級監控實戰

目錄 一&#xff1a;基于 kubernetes 的 Prometheus 介紹 1&#xff1a;環境簡介 2&#xff1a;監控流程 3&#xff1a;Kubernetes 監控指標 二&#xff1a;Prometheus 的安裝 1&#xff1a;從 Github 克隆項目分支 2&#xff1a;安裝 Prometheus Operator --server-si…

Python爬蟲實戰:研究django-dynamic-scraper 框架,構建電商動態數據采集系統

1. 引言 1.1 研究背景 據 Statista 數據,2025 年全球互聯網數據總量將突破 175ZB,其中 80% 為非結構化數據(網頁、文本、圖像等)。高效提取這些數據對企業競爭情報、學術研究至關重要。網絡爬蟲作為數據獲取的核心工具,經歷了從靜態頁面抓取到動態內容解析的演進,但傳統…

掌握MATLAB三維可視化:從基礎到實戰技巧

目錄 1. 引言&#xff1a;三維可視化的重要性 2. 基礎三維圖形繪制 2.1 三維曲線圖&#xff08;plot3&#xff09; 2.2 三維散點圖&#xff08;scatter3&#xff09; 2.3 三維網格圖&#xff08;mesh&#xff09; 2.4 三維曲面圖&#xff08;surf&#xff09; 3. 參數曲面…

Linux 服務部署:自簽 CA 證書構建 HTTPS 及動態 Web 集成

Linux 服務部署&#xff1a;自簽 CA 證書構建 HTTPS 及動態 Web 集成 一、HTTPS基礎原理 HTTPS是HTTP協議基于SSL/TLS協議的加密版本&#xff0c;核心差異及握手過程如下&#xff1a;HTTP與HTTPS對比協議傳輸方式端口核心特點HTTP明文傳輸80無加密&#xff0c;安全性低HTTPS數據…

Python3.10 + Firecrawl 下載公眾號文章

獲取Firecrawl apikey 打開官網&#xff0c;使用github賬號登錄 https://www.firecrawl.dev/ 進入個人中心 https://www.firecrawl.dev/app/api-keys 使用PyCharm創建python項目 創建.env # API配置 FIRECRAWL_API_KEYfc-9*********0816d5ac6b20 # 輸出配置 OUTPUT_DIRout…

IoT/透過oc_lwm2m/boudica150 源碼中的AT指令序列,分析NB-IoT接入華為云物聯網平臺IoTDA的工作機制

文章目錄概述指令調用順序具體接入指令分析ATE0 關閉回顯ATQREGSWT 設置&#xff08;平臺&#xff09;注冊模式ATQLWSREGIND0 手動注冊平臺set_autoconnect / ATNCONFIGATNBANDx,xset_plmn / ATCOPS_set_apn / ATCGDCONT(安全)接入參數 CDPDTLSPSKATNNMI 設置新消息指示_check_…

Android UI(一)登錄注冊 - Compose

UI - 登錄注冊 - Compose一、聲明式UI1. **顛覆傳統開發模式**2. **技術優勢**3. **開發效率提升**4. **未來生態方向**5. **實際影響**二、創建項目1. Compose UI結構2. Scaffold3. 可組合函數三、創建組件頁面1. LoginPage2. RegisterPage3. MainPage四、導航1. 添加依賴2. 使…

分享10個ai生成ppt網站(附ai生成ppt入口)

實測對比&#xff1a;15頁PPT從3小時壓縮到3分鐘的秘密武器 當ChatGPT能寫方案、Midjourney能畫圖&#xff0c;做PPT還在手動排版就OUT了&#xff01;這些AI生成PPT網站已實現「輸入文案秒出設計稿」&#xff0c;無論職場匯報、畢業答辯還是路演融資&#xff0c;零設計基礎也能…

最強開源視頻模型通義萬相wan2.1在comfyui中的安裝應用詳解

摘要&#xff1a;阿里巴巴開源通義萬相Wan2.1模型&#xff0c;支持文生視頻、圖生視頻等多種功能&#xff0c;并整合關鍵環節簡化創作流程。官方和Kiji版本需配套使用各自工作流。低顯存顯卡可使用GGUF模型解決方案&#xff0c;最低適配4G顯存。ComfyUI已原生支持該模型&#x…

機器學習:基于OpenCV和Python的智能圖像處理 實戰

機器學習&#xff1a;基于OpenCV和Python的智能圖像處理實戰——待填坑圖像處理基礎圖像的基本表示方法圖像處理的基本操作圖像運算圖像的色彩空間轉換圖像幾何變換4.1 仿射變換4.2 重映射4.3 投影變換 4.4 極坐標變換5 圖像直方圖處理7 圖像閾值處理8 圖像形態學處理github地址…

proteus實現簡易DS18B20溫度計(stm32)

一、新建proteus工程 具體看前面文章 二、搭建電路 需要配置供電網絡以及尋找元器件&#xff0c;細節看前面文章&#xff0c;下面給出電路圖 電路包含了五個部分&#xff1a; 1、DS18B20&#xff1a;數據引腳記得上拉 2、stm32電路 3、串口電路&#xff08;右下角那個器件…

Autoppt-AI驅動的演示文稿生成工具

本文轉載自&#xff1a;Autoppt-AI驅動的演示文稿生成工具 - Hello123工具導航 ** 一、 Autoppt&#xff1a;AI 驅動的智能演示文稿生成工具 Autoppt 是一款基于人工智能的在線演示文稿生成平臺&#xff0c;通過輸入主題或上傳文檔&#xff08;Word/PDF/ 圖片等&#xff09;&…

Flink on YARN啟動全流程深度解析

Flink on YARN 模式啟動流程及核心組件協作詳解整個過程分為三個主要階段&#xff1a;??JobManager 啟動??&#xff08;作業提交與 AM 初始化&#xff09;??TaskManager 資源分配與啟動????任務部署與執行??第一階段&#xff1a;作業提交與 JobManager (AM) 啟動?…

安卓開發者自學鴻蒙開發1基礎入門

1.基礎 聲明式UI&#xff1a;?? ??核心&#xff1a;?? 你??聲明??你想要UI是什么樣子&#xff08;在build()方法里描述&#xff09;&#xff0c;而不是一步步命令式地創建和操作View對象&#xff08;findViewById, setText, setOnClickListener&#xff09;。 模塊化…

彈性擴展新范式:分布式LLM計算的FastMCP解決方案

本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型應用開發學習視頻及資料&#xff0c;盡在聚客AI學院。如果你想系統學習AI大模型應用開發&#xff0c;挑戰AI高薪崗位&#xff0c;可在文章底部聯系。在現代大語言模型&#xff08;LLM&#xff09;應用架構中…

springboot項目不同平臺項目通過http接口AES加密傳輸

前言&#xff1a; 在公司協作開發的過程中&#xff0c;自己的項目是公共調用平臺&#xff0c;也可以說是中轉平臺&#xff0c;供公司其他團隊的項目進行接口調用。因為是不同團隊項目之間的相互調用&#xff0c;所以不能通過openFeign遠程調用。只能通過http遠程調用&#xff…

推薦5個網頁模板資源網

1. 企業模板官方網站&#xff1a; http://www.qimoban.com介紹&#xff1a;企業模板(qimoban.com )是一個專注于提供豐富多樣的企業模板的優質平臺&#xff0c;致力于為企業和個人打造高效、專業、個性化的模板獲取渠道。該平臺提供海量的企業模板資源&#xff0c;涵蓋企業官網…