了解選擇排序演算法(附Java範例)
選擇排序:逐步指南
選擇排序是一種簡單的排序演算法。 它反覆從清單的未排序部分中找到最小元素並將其放在開頭。這個過程一直持續到整個清單被排序為止。
選擇排序的工作原理
讓我們用一個例子來說明,按升序對這個陣列進行排序:
迭代 1:
目標是將最小的元素放在開頭。我們首先假設第一個元素是最小值。
我們將當前最小值與每個後續元素進行比較,如果找到更小的元素,則更新最小值。
這將持續到確定實際的最小值。
最後,我們將最小元素與第一個元素交換。
第一個元素現已排序。 後續迭代將僅考慮未排序的部分。
後續迭代:
對每個剩餘的未排序元素重複此過程。
演算法迭代 n-1 次(其中 n 是數組的長度)。 第五次迭代後(對於六元素數組),最後一個元素被隱式排序。
選擇排序實作(Java):
import java.util.Arrays; public class SelectionSortTest { public static void main(String[] args) { int[] arr = {8, 2, 6, 4, 9, 1}; System.out.println("Unsorted array: " + Arrays.toString(arr)); selectionSort(arr); System.out.println("Sorted array: " + Arrays.toString(arr)); } public static void selectionSort(int[] arr) { int size = arr.length; // Iterate through the array size-1 times for (int i = 0; i < size - 1; i++) { int minIndex = i; // Find the minimum element in the unsorted part for (int j = i + 1; j < size; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // Swap the minimum element with the first unsorted element int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } }
輸出:
未排序數組:[8,2,6,4,9,1] 排序數組:[1, 2, 4, 6, 8, 9]
複雜性分析:
- 時間複雜度: 所有情況下都是 O(n²)(最佳、平均、最差)。 無論輸入順序為何,巢狀迴圈總是執行固定次數。
- 空間複雜度: O(1)。 這是一種就地演算法,需要恆定的額外空間。
結論:
選擇排序的 O(n²) 時間複雜度使其對於大型資料集效率低下。 它最適合小型陣列或簡單性優先於性能的情況。
以上是了解選擇排序演算法(附Java範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

在使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名以構建查詢條件,是一個常見的難題。本文將針...
