首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

冒泡排序入門指南:原理、實現與代碼示例

     編輯:Java 相關知識

什麼是冒泡排序?

冒泡排序是排序算法中最基礎、最容易理解的入門級算法之一。因其邏輯簡單直觀,常被用作計算機科學課程中排序算法的首個教學案例。名稱來源於排序過程中,較大的元素如同水泡般從序列底部逐步「冒升」到頂部的特性。

算法核心邏輯

冒泡排序通過重複遍歷待排序序列,比較相鄰元素並在順序錯誤時交換位置。每一輪遍歷都會將當前未排序部分的最大元素移動到正確位置。以序列 {10, 2, 11, 8, 7} 為例:

  • 第一輪:比較 10 和 2 → 交換;比較 10 和 11 → 不變;比較 11 和 8 → 交換;比較 11 和 7 → 交換。最大值 11 移至末尾。
  • 後續輪次同理,範圍逐步縮小,直到序列有序。

冒泡排序過程示意圖1 冒泡排序過程示意圖2

Java 實現

package com.algorithm.sort.bubble;

import java.util.Arrays;

public class Bubble {
    public static void main(String[] args) {
        int[] nums = {10, 2, 11, 8, 7};
        nums = bubbleSort(nums);
        System.out.println(Arrays.toString(nums));
    }

    private static int[] bubbleSort(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums.length - i - 1; j++) {
                if (nums[j] > nums[j + 1]) {
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                }
            }
        }
        return nums;
    }
}

Python 3 實現

def bubble_sort(nums):
    for i in range(len(nums)):
        for j in range(len(nums) - i - 1):
            if nums[j] > nums[j + 1]:
                temp = nums[j]
                nums[j] = nums[j + 1]
                nums[j + 1] = temp
    return nums

nums = [10, 2, 11, 8, 7]
nums = bubble_sort(nums)
print(nums)

複雜度分析與優化提示

  • 時間複雜度:最壞/平均 O(n²),最佳 O(n)(已有序時可提前終止)
  • 空間複雜度:O(1),原地排序
  • 穩定性:穩定排序(相等元素相對位置不變)
  • 實際工程中較少直接使用,但理解其思想有助於掌握更高級算法(如快速排序的分區邏輯)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved