python选择排序代码_Python算法--排序-选择排序

一、选择排序

在数据量小的时候,对于排序,我们也可以采用选择排序(Selection sort),是一种简单直观的排序算法。

原理大致如下:首先,我们选择未排序数列的首位作为参考,然后依次用后面的元素与其进行比较,如果发现比他小(大),我们就进行交换位置处理,直到全部比对完成一轮后,再将第二个元素后面的元素依次与第二个元素进行比较,以此类推,直到全部遍历完所有的元素为止,就得到了一列有顺序的元素集合。

我们看一下网上的这个示意图:

1524088-20200813200925771-1930303057.gif

二、编码实现

直接上 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)

运行结果如下所示:

1524088-20200813201139804-1443675010.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值