1. 程式人生 > 其它 >選擇排序(Selection Sort)-- 初級排序演算法

選擇排序(Selection Sort)-- 初級排序演算法

技術標籤:演算法模型演算法資料結構排序演算法python選擇排序

1 選擇排序(Selection Sort)

選擇排序(Selection-sort)是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

演算法描述
n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。具體演算法描述如下:

  • 初始狀態:無序區為R[1…n],有序區為空;
  • 第i趟排序(i=1,2,3…n-1)開始時,當前有序區和無序區分別為R[1…i-1]和R(i…n)。該趟排序從當前無序區中選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1…i]和R[i+1…n)分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區;
  • n-1趟結束,陣列有序化了。

動圖演示
在這裡插入圖片描述

程式碼演示

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        if not nums or len(nums)==0: return []
        n = len(nums)
        for i in range(n-1):
            min = i
            for j in range(i+1, n):
                if nums[j] < nums[min]:
                    min
= j temp = nums[i] nums[i] = nums[min] nums[min] = temp return nums

演算法特性

  • 時間複雜度(最好): O ( n 2 ) O(n^2) O(n2)
  • 時間複雜度(最壞): O ( n 2 ) O(n^2) O(n2)
  • 時間複雜度(平均): O ( n 2 ) O(n^2) O(n2)
  • 空間複雜度: O ( 1 ) O(1) O(1)
  • 穩定性:不穩定

演算法分析
表現最穩定的排序演算法之一,因為無論什麼資料進去都是 O ( n 2 ) O(n^2)

O(n2)的時間複雜度,所以用到它的時候,資料規模越小越好。

參考資料

十大經典排序演算法(動圖演示)