Python 十大排序---选择排序

本文详细介绍了选择排序算法的工作原理,包括其基本步骤、Python代码实现、时间复杂度分析以及稳定性讨论。选择排序是一种简单直观的排序算法,通过在未排序序列中反复查找最小或最大元素并将其放置于正确位置,直至所有元素排序完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自: https://blog.youkuaiyun.com/zhaobig/article/details/78607714
作者:纳尔逊皮卡丘
来源:优快云
原文:https://blog.youkuaiyun.com/zhaobig/article/details/78607714
版权声明:本文为博主原创文章,转载请附上博文链接!

选择排序(Selection sort)
选择排序:一种简单直观的排序算法。

工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余的未排序的元素中继续寻找最小(大)元素,然后放到已排序的末尾。直到所有元素均排序完毕。

优点:选择排序与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被一道其最终位置上,因为对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

使用Python代码实现选择排序:

list 传递的参数,order排序 默认为1,升序,否则降序,仅支持整数类型

def selectsort(list, order=1):
if not isinstance(order, int):
raise TypeError(‘order类型错误’)
for i in range(len(list) - 1):
# 记录最小位置
min_index = i
# 筛选出最小数据
for j in range(i + 1, len(list)):
if order == 1:
if list[j] < list[min_index]:
min_index = j
else:
if list[j] > list[min_index]:
min_index = j
# 交换位置
if min_index != i:
list[i], list[min_index] = list[min_index], list[i]
print list

selectsort([1, 4, 9, 6, 3, 100], 1)
时间复杂度:
最优时间复杂度:O(n^2)

最坏时间复杂度:O(n^2)

稳定性:不稳定(考虑升序每次选择最大的情况)

动态图演示:
https://img-blog.youkuaiyun.com/20171122201647205?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2JpZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值