排序>>選擇排序>>選擇排序
List:
1 2 3 |
0.概念+虛擬碼+示例分析 1.選擇排序實現 2.Question |
- start
基本概念:
維基百科http://zh.wikipedia.org/wiki/%E9%81%B8%E6%93%87%E6%8E%92%E5%BA%8F
虛擬碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function selectSort(A : list[1..n]) { index = n while (index > 1): #共有n-1次選擇 { max_index = index for i from index downto 1 { #每次從剩餘序列選出最大的 if(A[i] > A[max_index) { max_index = i } } swap(A[index], A[max_index ]) #將最大的換到後面 index = index -1 } } |
示例:
[49, 38, 65, 97, 76, 13, 27]
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Current index 6 value= 27 Max index: 3 value= 97 exchange -> [49, 38, 65, 27, 76, 13, 97] Current index 5 value= 13 Max index: 4 value= 76 exchange -> [49, 38, 65, 27, 13, 76, 97] Current index 4 value= 13 Max index: 2 value= 65 exchange -> [49, 38, 13, 27, 65, 76, 97] Current index 3 value= 27 Max index: 0 value= 49 exchange -> [27, 38, 13, 49, 65, 76, 97] Current index 2 value= 13 Max index: 1 value= 38 exchange -> [27, 13, 38, 49, 65, 76, 97] Current index 1 value= 13 Max index: 0 value= 27 exchange -> [13, 27, 38, 49, 65, 76, 97] Done |
- start
實現程式碼
1 2 3 4 5 6 7 8 9 10 |
def select_sort(l): index = len(l) -1 while index: max_index = index for i in range(index): if l[i] > l[max_index]: max_index = i if l[max_index] > l[index]: l[index],l[max_index] = l[max_index], l[index] index -= 1 |
- start
A.概念,過程描述?
B.交換次數,比較次數,賦值次數?
C. 時間複雜度?空間複雜度?是否是穩定排序?
D.適用場景,何種情況下表現最優
打賞支援我寫出更多好文章,謝謝!
打賞作者
打賞支援我寫出更多好文章,謝謝!
任選一種支付方式