选择排序(Selection Sort)
算法思想:每个回合都选择剩下元素中最大的元素。和冒泡排序把大的元素往后挪的方法不同的是,选择排序先假设第一个元素为最大值,然后通过比较找出后面元素中的最大值的 index,最后将 index 上的元素和最后的元素互换位置,即实现将最大元素排在最后。时间复杂度为 。
![](https://i-blog.csdnimg.cn/blog_migrate/ca87df859930ad31e87cfccec54e56c4.png)
def selection_sort(a_list):
for fill_slot in range(len(a_list)-1,0,-1):
pos_of_max = 0 # 假设系列中第一个元素最大
for location in range(1,fill_slot): # 找出最大的元素所在的 location
if a_list[location] > a_list[pos_of_max]:
pos_of_max = location
a_list[fill_slot],a_list[pos_of_max] = a_list[pos_of_max],a_list[fill_slot] #把最大的元素交换到最后
图像和例子参考了这篇文章,里面有关于算法每部的运行步骤,值得参考。
http://interactivepython.org/courselib/static/pythonds/SortSearch/TheSelectionSort.html