简单选择排序的思路主要是:先拿出数组的第一个元素,与该数组之后的元素中最小(大)的那个元素交换位置,接下来拿出数组第二个元素,继续与这个数组之后的最小(大)的那个元素交换位置,以此类推。
在网上看到说这个算法"不稳定",原来是因为在使用选择排序的过程中,两个相同大小的元素的相对位置被打破了,就称为算法"不稳定"。
举个例子:[5,6,8,5,3,7] 用上面的算法,我们会看到第一个 5 和 3交换了位置,但是它 和第二个5的相对顺序位置被改变了。
python实现上面的算法:
def select_sort(origin_items, comp=lambda x, y: x < y):
"""简单选择排序"""
items = origin_items[:]
for i in range(len(items) - 1):
min_index = i
for j in range(i + 1, len(items)):
if comp(items[j], items[min_index]):
min_index = j
items[i], items[min_index] = items[min_index], items[i]
return items
注: lambda x, y: x < y 指的是定义一个函数,传入参数 x, y ,返回 x<y 的结果。