選擇排序(Selection Sort)-- 初級排序演算法
阿新 • • 發佈:2021-01-01
技術標籤:演算法模型演算法資料結構排序演算法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)的時間複雜度,所以用到它的時候,資料規模越小越好。