選擇排序之python
阿新 • • 發佈:2018-06-01
分享圖片 turn 改變 bubuko AR imp 每次 for 選擇排序
選擇排序( Selection sort)
1.算法描述:
- 列表上的2個線性傳遞
- 在每次通過時,它會選擇最小的值
- 用最後一個未分類元素交換它
2.算法屬性:
- 算法時間復雜度:O(n**2)
- 不穩定性:list裏面重復元素可能會因選擇後改變前後順序
- O(1) 額外的空間
- O(n2 ) 對比
- O(n) 互換
- 不具有適應性:不像冒泡那樣可以加flag來改善
3.代碼實現
#kumata‘s code #算法復雜度O(n**2) #找到最小的元素就和第一個index交換 #從小到大排
import time
def selection_sort(nums=list): start= time.time() #第一層選擇第n小的元素下標 for i in range(len(nums)): # n pos_min = i # Index #第二層遍歷找出需要交換的元素下標 for j in range(i + 1,len(nums)): if nums[pos_min] > nums[j]: pos_min = j #交換嘻嘻 nums[i],nums[pos_min] = nums[pos_min],nums[i] t= time.time() - start return nums,t nums = [1,2,5,8,4,3,6] selection_sort(nums) #輸出結果 ([1, 2, 3, 4, 5, 6, 8], 0.0)
選擇排序之python