选择排序(Selecting Sort)
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 —百度百科
- 时间复杂度:最好 O(n)=O(n²);平均O(n)=O(n²);最差O(n)=O(n²)
- 空间复杂度:O(n)=O(1)
- 稳定性: 不稳定
- 优势: 交换次数为O(n)
算法描述
- 定义低位index=0
- 从低位index遍历数组查找最小元素
- 将最小元素与低位index元素交换
- index加一。若start等于数组长度则排序结束,否则执行2
图片来自维基百科
排序示例
数组S: [9,1,5,3,8,7]
第一趟:[1,9,5,3,8,7] –index=0,min=1
第二趟:[1,3,5,9,8,7] –index=1,min=3
第三趟:[1,3,5,9,8,7] –index=2,min=5
第四趟:[1,3,5,7,8,9] –index=3,min=7
第五趟:[1,3,5,7,8,9] –index=4,min=8
第六趟:[1,3,5,7,8,9] –index=5,min=9
示例代码
public static void SelectSort(int[] S){ //C#
int minIndex;
for (int i = 0; i < S.Length; i++){
minIndex = i;
for (int j = i + 1; j < S.Length; i++){
if (S[minIndex] > S[j]){
minIndex = j;
}
}
S.Swap(i, minIndex);
}
}
def select_sort(s): #Python
min_index = 0
for i in range(0, len(s)):
min_index = i
for j in range(i+1, len(s)):
if s[min_index] > s[j]:
min_index = j
s[min_index], s[i] = s[i], s[min_index]
文中若有什么错误,欢迎留言指正。
转载请保留出处:http://blog.csdn.net/x1060549/article/details/78775024