选择排序的实现

本文介绍了选择排序的工作原理,通过逻辑分析和代码实现展示了如何使用选择排序对数组进行排序,并给出了排序前后数组的对比。此外,还提及了选择排序的时间复杂度和稳定性。

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

一、选择排序的工作原理

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

二、逻辑实现

[7,5,3,6,44,22,99,11]
[3,5,7,6,44,22,99,11]  #第一次  获取列表最小的元素与列表第一个元素交换位置
[3,5,7,6,44,22,99,11]  #第二次  列表第一个元素不动,获取剩下列表(除列表第一个元素外)的元素的最小值与列表第二个元素交换位置
[3,5,6,7,44,22,99,11]   #第三次  列表第一,二个元素不动,获取剩下列表(除列表第一,二个元素外)的元素的最小值与列表第三个元素交换位置
#...
[3,5,6,7,11,22,99,44]  #倒数第二次
[3,5,6,7,11,22,44,99]   #直到最后一次,获取剩余列表(最后两个元素99,44)元素的最小值与列表倒数第二个元素交换位置。

三、代码实现

def select_sort(alist):
    n=len(alist)
    for i in range(n-1): #O(n)
        #剩余列表中最小值的索引
        min_index=i
        for j in range(i+1,n):  #O(n)
            if alist[min_index]>alist[j]:
                min_index=j
        if min_index!=i:
            alist[i],alist[min_index]=alist[min_index],alist[i]
alist=[7,5,3,6,44,22,99,11]
print("原数组")
print(alist)
select_sort(alist)
print("排序后的数组:")
print(alist)

结果展示:

原数组
[7, 5, 3, 6, 44, 22, 99, 11]
排序后的数组:
[3, 5, 6, 7, 11, 22, 44, 99]

四、选择排序的时间复杂度及其稳定性

1.最优时间复杂度:O(n^2)
2.最坏时间复杂度:O(n^2)
3.稳定性:不稳定(考虑升序每次选择最大的情况)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值