一、选择排序
在数据量小的时候,对于排序,我们也可以采用选择排序(Selection sort),是一种简单直观的排序算法。
原理大致如下:首先,我们选择未排序数列的首位作为参考,然后依次用后面的元素与其进行比较,如果发现比他小(大),我们就进行交换位置处理,直到全部比对完成一轮后,再将第二个元素后面的元素依次与第二个元素进行比较,以此类推,直到全部遍历完所有的元素为止,就得到了一列有顺序的元素集合。
我们看一下网上的这个示意图:
二、编码实现
直接上 Python 编码实现如下:
# -*- coding: utf-8 -*-
# @Author : Sai
# @Email : 932934045@qq.com
# @File : select_sort.py
# @Time : 2020/8/11 14:54
def selection_sort(arr):
'''
选择排序
:param arr: 待排序列表
:return: 排序后的列表
'''
for i in range(len(arr) - 1):
# 选择一个元素的索引暂作为最小数
min_Index = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_Index]:
min_Index = j
if min_Index != i:
arr[i], arr[min_Index] = arr[min_Index], arr[i]
# print(arr) # 这里我们可以打印每一轮排序后的结果,便于理解
return arr
if __name__ == '__main__':
arr1 = [10, 4, 5, 9, 8, 6, 0, 3, 2, 7, 1]
print("排序前顺序为:", arr1)
new_arr = selection_sort(arr1)
print("排序后顺序为:", new_arr)
运行结果如下所示: