1. 程式人生 > 其它 >【JAVA】排序演算法之選擇排序

【JAVA】排序演算法之選擇排序

前言:

基礎排序演算法,旨在簡單易懂講解演算法邏輯和思路,以下均使用升序方式來講解和實現演算法。

思路:

選擇排序重在選擇二字,比如給定一串數字  5 3 4 1 2,我們選定第一位存放最小的數字,因此需要找出數字5後面所有數字 3 4 1 2中最小的數字與其交換,以此類推再完成第二個第三個直到最後一位。

程式碼:

public static int[] selectAsc(int[] nums) {
    int length = nums.length;
    for (int i = 0; i < length; i++) {
        int min = i;
        
for (int j = i+1; j < length; j++) { if(nums[min] > nums[j]){ min = j; } } swap(i,min,nums); } return nums; } public static void swap(int src, int target, int[] nums){ int val = nums[src]; nums[src] = nums[target]; nums[target]
= val; }

分析:

選擇排序的每一次選中最小值都需要經過N-m次迴圈,N為陣列的總長度,m為當前排序的位置。

交換使用一個臨時變數儲存交換位置。

最好情況:(N-1)+(N-2)+ ... + 2 + 1 = N(N-1)/2 次

最壞情況:(N-1)+(N-2)+ ... + 2 + 1 = N(N-1)/2 次

時間複雜度:O(n²)

空間複雜度:O(1)