简单选择排序的基本思想:
每走一趟,都在待排序的元素中选择关键字最小【或最大】的元素加入有序子序列,如果数组中有n个元素,若进行简单选择排序,只需走n-1趟就可以,因为如果只剩最后一个的话,就不需要再选择最小【或最大】的元素了
实现过程:
每次选择最小【或最大】的元素,添加在前面的有序序列中
【绿色代表有序序列,橘色代表待排序序列】
废话不多说,直接上代码:
arr = [2, 3, 67, 5, 56, 25, 56, 65]
# 只需循环 n-1 次
for i in range(len(arr)-1):
# 从 i+1 的位置开始到最后,选择最小的元素,放在 i 的位置上
for j in range(i+1, len(arr)):
if arr[i] > arr[j]:
arr[i], arr[j] = arr[j], arr[i]
print(arr)
运行结果为:
根据上面的实现过程以及代码,可以看出,简单选择排序的性能为:
注意:上面的案例可能不能很好的体现出简单选择排序是否具有稳定性,我们只需要这样想一下,如果在运行过程中,可能会出现这种情况,有两个相同的元素:a,b【a在b的前面】,若这两个元素的后面出现一个比这两个元素小的元素:c,此时,a的位置刚好在有序序列的后面,这样就会将c与a的位置发生调换,这样的话,排序完之后,就很可能会出现b的位置在a前面的情况,因此,简单选择排序是不具备稳定性的