Java排序算法之<冒泡排序>

目錄

1、冒泡排序介紹

2、算法步驟

3、Java 實現(帶優化)

4、算法復雜度分析

5、優點與缺點


前言

?排序算法的“進化路線”:

冒泡排序 → 選擇排序 → 插入排序 → 希爾排序 → 快速排序 → 歸并排序 → 堆排序↓Java 內置排序(Arrays.sort)

1、冒泡排序介紹

????????冒泡排序是一種簡單的排序算法。它重復地遍歷要排序的數組,比較相鄰的兩個元素,如果順序錯誤(如前一個比后一個大),就交換它們。

????????這個過程像“氣泡”一樣把較大的元素逐漸“浮”到數組的末尾。


2、算法步驟

如下所示:

  1. 從第一個元素開始,比較相鄰的兩個元素。
  2. 如果前一個元素大于后一個元素(升序),則交換。
  3. 繼續對每一對相鄰元素做相同的操作,直到數組末尾。此時,最大的元素已經“冒泡”到最后。
  4. 重復上述過程,但每次遍歷的長度減一(因為末尾已有序)。
  5. 當某一輪沒有發生任何交換時,說明數組已有序,可以提前結束。


3、Java 實現(帶優化)

public class BubbleSort {/*** 冒泡排序 - 升序排列* @param arr 待排序的整型數組*/public static void bubbleSort(int[] arr) {if (arr == null || arr.length <= 1) {return;}int n = arr.length;boolean swapped; // 用于優化:檢測是否發生交換for (int i = 0; i < n - 1; i++) {swapped = false;// 每次遍歷將最大值“冒泡”到末尾for (int j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {// 交換元素swap(arr, j, j + 1);swapped = true;}}// 如果本輪沒有發生交換,說明數組已經有序if (!swapped) {break;}}}/*** 交換數組中兩個元素*/private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}// 測試示例public static void main(String[] args) {int[] arr = {64, 34, 25, 12, 22, 11, 90};System.out.println("排序前:" + java.util.Arrays.toString(arr));bubbleSort(arr);System.out.println("排序后:" + java.util.Arrays.toString(arr));}
}

輸出結果:

排序前:[64, 34, 25, 12, 22, 11, 90]
排序后:[11, 12, 22, 25, 34, 64, 90]

4、算法復雜度分析


5、優點與缺點

1、優點:

  • 實現簡單,邏輯清晰。
  • 是穩定排序。
  • 原地排序,空間開銷小。
  • 能檢測數組是否已有序(通過?swapped?標志優化)。

2、缺點:

  • 時間復雜度高 O(n2),不適合大數據量排序。
  • 效率遠低于快排、歸并、堆排序等。

建議使用 Java 內置排序:

Arrays.sort(arr); // 使用雙軸快排(基本類型)或 Timsort(對象)


參考文章:

1、六大排序算法:插入排序、希爾排序、選擇排序、冒泡排序、堆排序、快速排序-CSDN博客文章瀏覽閱讀10w+次,點贊6.3k次,收藏3.4w次。本文詳細介紹了排序算法中的插入排序、希爾排序、選擇排序、冒泡排序、堆排序以及兩種快速排序方法(Hoare版本和挖坑法)。通過動圖演示和代碼實現,展示了這些算法的工作原理和時間復雜度,幫助讀者深入理解排序算法的內部機制。 https://blog.csdn.net/weixin_50886514/article/details/119045154?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220faf03d22b2d125d5f49a4649ad59c85%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=0faf03d22b2d125d5f49a4649ad59c85&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-119045154-null-null.142^v102^control&utm_term=%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F&spm=1018.2226.3001.4187

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

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

相關文章

生活毫無頭緒就毫無頭緒吧(7.24)

最近好長一段時間沒有記錄了明顯感覺自己陷入了混亂中作息規律&#xff0c;專注力&#xff0c;心流&#xff0c;營養的飯菜如今下筆也沒有什么頭緒&#xff0c;前些日子本有感想但是又疲于記錄&#xff0c;忘了許許多多最近在寫論文&#xff0c;但嘗試了游泳——蛙泳感覺太神奇…

vulhub-master 靶場Apache(httpd)漏洞

apache_parsing_vulnerability 漏洞原理在Apache1.x/2.x中Apache 解析?件的規則是從右到左開始判斷解析,如果后綴名為不可識別?件解析,就再往左判斷。如 1.php.xxxxx&#xff0c;Apache會試圖識別你的代碼&#xff0c;從右往左一個一個試。漏洞攻略參加一個1.php.jpg文件&…

Python 數據分析(一):NumPy 基礎知識

目錄 1. 簡介2. 使用 2.1 ndarray2.2 數據類型2.3 索引與切片2.4 副本與視圖2.5 軸的概念2.6 基本運算2.7 常用操作 1. 簡介 NumPy&#xff08;Numerical Python&#xff09;是一個開源的 Python 科學計算擴展庫&#xff0c;主要用來處理任意維度數組與矩陣&#xff0c;通常…

編程與數學 03-002 計算機網絡 04_數據鏈路層功能

編程與數學 03-002 計算機網絡 04_數據鏈路層功能一、數據鏈路層的基本任務&#xff08;一&#xff09;封裝成幀&#xff08;二&#xff09;差錯控制&#xff08;三&#xff09;流量控制二、差錯檢測與糾正方法&#xff08;一&#xff09;常用的差錯檢測碼&#xff08;二&#…

latex中既控制列內容位置又控制列寬,使用>{\centering\arraybackslash}p{0.85cm}

示例&#xff1a;\usepackage{array} % 為 >{...} 修飾符提供支持\begin{table*}[ht!]\centering \begin{tabular}{p{2.8cm} >{\centering\arraybackslash}p{0.85cm} >{\centering\arraybackslash}p{0.85cm} >{\centering\arraybackslash}p{0.85cm} >{\ce…

醫療數據挖掘Python機器學習案例

1. 醫療數據挖掘概述 醫療數據挖掘是從大量的醫療數據中提取有價值信息和知識的過程&#xff0c;旨在輔助醫療決策、疾病預測、治療方案優化等。隨著醫療信息化的發展&#xff0c;電子病歷、醫療影像、基因數據等多源異構數據不斷積累&#xff0c;為醫療數據挖掘提供了豐富的素…

人工智能概述

&#x1f31f; 歡迎來到AI奇妙世界&#xff01; &#x1f31f; 親愛的開發者朋友們&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能領域的探索者與分享者&#xff0c;很高興在CSDN與你們相遇&#xff01;&#x1f389; 在這里&#xff0c;我將持續輸出AI前沿技術、實…

C++性能優化擂臺技術文章大綱

引言性能優化在C開發中的重要性擂臺賽形式的優勢&#xff1a;激發創意&#xff0c;展示不同優化技巧目標讀者&#xff1a;中高級C開發者擂臺賽規則設計統一基準測試環境&#xff08;硬件、編譯器、優化標志&#xff09;參賽代碼需通過功能正確性驗證性能指標&#xff1a;執行時…

AI人工智能時代,Bard的智能家政服務助手

AI人工智能時代,Bard的智能家政服務助手 關鍵詞:人工智能、智能家居、Bard助手、機器學習、自然語言處理、物聯網、智能服務 摘要:本文深入探討了AI人工智能時代下,基于Bard技術的智能家政服務助手的實現原理、技術架構和應用場景。我們將從核心技術入手,分析其背后的機器…

MySQL(155)什么是MySQL的事件調度器?

MySQL的事件調度器&#xff08;Event Scheduler&#xff09;是一種強大的工具&#xff0c;用于在指定的時間間隔或特定時間點自動執行SQL語句。它類似于操作系統中的任務計劃程序或Cron作業&#xff0c;適用于需要定時執行的任務&#xff0c;如數據歸檔、定期報告生成、定時清理…

【Zephyr開發實踐系列】09_LittleFs文件系統操作

文章目錄前言編寫目的術語和縮寫詞方案選擇一、Littlefs介紹二、Littlefs搭建步驟1.設備樹構建2.自動掛載流程&#xff08;二選一&#xff09;2.1設備樹啟用自動掛載2.2 在 littlefs_fs.c 中&#xff0c;設備樹宏會被展開2.3 模塊注冊初始化2.4 初始化階段2.4.1注冊Littlefs文件…

保護板測試儀:守護電池安全的“幕后衛士”

在現代科技飛速發展的今天&#xff0c;電池作為各類電子設備和新能源系統的核心動力源&#xff0c;其安全性與穩定性直接關系到設備的正常運行和使用者的安全。而保護板作為電池的“安全衛士”&#xff0c;承擔著過充保護、過放保護、短路保護等關鍵功能。保護板測試儀則是專門…

【unitrix】 6.11 二進制數字標準化模塊(normalize.rs)

一、源碼 這個模塊實現了類型級別的二進制數標準化處理&#xff0c;確保二進制數在組合時保持最簡形式。 //! 二進制數字標準化模塊 //! //! 提供二進制數字(B<H, L>)的組合前標準化功能&#xff0c;確保數字以最簡形式表示&#xff0c; //! 避免同一數值有不同表示形式。…

解決OpenHarmony中找不到pthread_cancel和pthread_setcanceltype等libc符號的問題

筆者在移植三方庫到OpenHarmony時遇到了pthread_cancel和pthread_setcanceltype函數找不到的問題&#xff0c;將解決辦法分享如下&#xff1a; OpenHarmony的使用的c庫musl中注釋了這些函數的導出&#xff0c;在third_party/musl/libc.map.txt將屏蔽的函數中取消注釋即可

Python編程進階知識之第五課處理數據(matplotlib)

簡介matplotlib 是 Python 中最流行的數據可視化庫之一&#xff0c;它可以創建各種高質量的圖表。無論是簡單的折線圖&#xff0c;還是復雜的 3D 圖形&#xff0c;matplotlib 都能輕松應對。它提供了類似 MATLAB 的繪圖接口&#xff0c;使得用戶可以非常方便地進行圖表的創建和…

rust-所有權

什么是所有權 所有權是一組規則&#xff0c;它決定了 Rust 程序如何管理內存。所有運行中的程序都必須管理它們對計算機內存的使用方式。某些語言使用垃圾回收&#xff08;GC&#xff09;&#xff0c;在程序運行時定期查找不再使用的內存&#xff1b;另一些語言則要求程序員顯式…

破解哈希極化:基于主動路徑規劃的智算網絡負載均衡方案

如今人工智能&#xff08;AI&#xff09;和大模型訓練的蓬勃發展&#xff0c;大規模AI算力集群&#xff08;智算集群&#xff09;已成為關鍵基礎設施。這類集群對網絡性能&#xff0c;特別是高吞吐、低延遲和無損特性有著嚴苛要求&#xff0c;RoCE因此被廣泛應用。然而&#xf…

Vue工程化 ElementPlus

一、Vue工程化1、環境準備create-vue是Vue官方提供的最新的腳手架工具&#xff0c;用于快速生成一個工程化的Vue項目。提供了以下功能&#xff1a;統一的目錄結構本地調試熱部署單元測試集成打包上線依賴環境&#xff1a;Node JS 是一個免費、開源、跨平臺的JavaScript運行時環…

深入解析TCP:可靠傳輸的核心機制與實現邏輯

Linux 系列 文章目錄Linux 系列前言一、TCP協議的概念1.1 TCP協議的特點1.2 TCP又叫做傳輸控制協議二、TCP協議段格式2.1、TCP的流量控制----------窗口大小&#xff08;16位&#xff09;2.2 TCP的確認應答機制2.2.1 什么是確認應答機制2.2.2 確認應答機制的優化2.3 超時重傳機…

通縮浪潮中的 “測量防線”:新啟航如何用國產 3D 白光干涉儀筑牢半導體成本護城河?

一、通縮浪潮下半導體行業的成本困局在通縮浪潮沖擊下&#xff0c;半導體行業面臨市場需求疲軟、產品價格下滑的嚴峻挑戰。為維持競爭力&#xff0c;降低生產成本成為企業生存發展的關鍵。而 3D 白光干涉儀作為半導體晶圓檢測、制程監控的核心設備&#xff0c;傳統進口產品價格…