排序算法:冒泡排序入門,步驟詳解+代碼示例

冒泡排序是計算機科學中最簡單的排序算法之一,核心思想是通過重複比較相鄰元素並交換位置,使大元素逐步“冒泡”到數組末尾。其基本步驟爲:外層循環控制n-1輪比較(每輪確定一個大元素位置),內層循環從第一個元素開始,依次比較相鄰元素,若前大後小則交換;優化項爲若某輪無交換,說明數組已有序,可提前終止。 時間複雜度上,最壞情況(完全逆序)爲O(n²),最好情況(已排序)爲O(n),空間複雜度爲O(1)(僅需常數額外空間)。該算法實現簡單、易於理解,適合小規模數據排序,是排序算法的入門基礎。

閱讀全文
使用Java實現計數排序算法

計數排序是簡單直觀的非比較型排序算法,通過統計元素出現次數並結合前綴和確定位置,適用於元素範圍小(如整數)、重複元素多且需穩定排序的場景。其核心思路:先確定元素範圍(找min和max),統計各元素出現次數,計算前綴和得到元素最後位置,再從後遍歷原數組生成排序結果。 實現步驟:處理邊界(空/單元素數組無需排序),確定min/max,創建計數數組統計次數,計算前綴和(累加得到元素最後位置),從後遍歷生成結果。時間複雜度O(n+k)(n爲數組長度,k爲元素範圍),空間複雜度O(n+k)。適用場景爲整數範圍小(如分數、年齡)、重複元素多且需穩定排序。該算法通過計數和累加實現,無需比較,適合初學者理解排序基本思想。

閱讀全文
使用Java實現快速排序算法

快速排序基於分治思想,核心是選基準元素分區(小於和大於基準),遞歸處理子數組,平均時間複雜度O(n log n),是常用高效排序算法。基本步驟:選基準(如最右元素),分區後遞歸排序左右子數組。分區邏輯:以最右元素爲基準,定義i指向“小於基準區域”末尾,遍歷數組交換小於基準的元素,最後將基準移至正確位置。Java代碼實現了該邏輯。時間複雜度平均O(n log n),最壞O(n²),空間平均O(log n)。缺點是不穩定排序,最壞性能較差,需注意基準選擇優化性能。

閱讀全文