Python算法--排序-选择排序

一、选择排序

在数据量小的时候,对于排序,我们也可以采用选择排序(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)

运行结果如下所示:

原文地址:https://www.cnblogs.com/saixuyu/p/13496749.html