杂学第七篇:python实现十大经典的排序算法(最简便的实现+自身理解)之选择排序

公示:相关概念解释及动图来源于https://www.cnblogs.com/onepixel/articles/7674659.html

选择排序的原理很简单,简单到它是最容易想到的排序算法:就是从头开始,每次遍历数组,都把最大或者最小的那个数放在没排序的第一位。但是有些细节需要理清楚,要不然也会造成理解困难。

细节:选择排序是不占额外的空间。怎么做到的呢?它把数组a的空间从前往后,分为有序区和无序区。从i= 0开始遍历数组(即数组的第一个),这时全是无序区,有序区长度为0,遍历第一遍,找到最大或最小的数,跟a[i]交换即可,再把i+1,执行下一次遍历,找到之后再跟a[i]交换。此时,i前面的区域就是有序区,i以及其后面的区域就是无序区。

附上简单明了的实现:

import sys
A = [64, 25, 12, 22, 11]
# 循环数组
for i in range(len(A)):
    min_idx = i
    for j in range(i + 1, len(A)):
        if A[min_idx] > A[j]:
            min_idx = j

    A[i], A[min_idx] = A[min_idx], A[i]

print("排序后的数组:",A)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值