简单选择排序

简单选择排序
属于选择排序
两两比较大小,找出极值(极大值或极小值)被放置在固定的位置


简单选择排序总结
简单选择排序需要数据一轮轮比较,并在每一轮汇总发现极值
没有办法知道当前轮是否已经达到排序要求,但是可以知道极值是否在目标索引位置上
遍历次数1,。。,n-1之和n(n-1)/2
时间复杂度0(n^2)
减少了交换次数,提高了效率,性能略好于冒泡法


简单选择排序实现
#简单选择排序
x = [1,9,8,5,6,7,4,3,2]
length = len(x)
for i in range(length):
    maxnum = i
    
    for j in range(i+1,length):
        if x[j] > x[maxnum]:
            maxnum = j
    if maxnum != i:
        x[i],x[maxnum] = x[maxnum],x[i]
print(x)
        

#简单选择排序进化
x = [1,9,8,5,6,7,4,3,2]
length = len(x)

for i in range(length//2):
    maxnum = i
    minnum = -i-1
    for j in range(i + 1, length - i):
        if x[j] > x[maxnum]:
            maxnum = j
        if x[-j-1] < x[minnum]:
            minnum = -j-1
    if maxnum != i:
        x[maxnum],x[i] = x[i],x[maxnum]
    if maxnum != i and i == length + minnum:
            minnum = maxnum
    if minnum != -i-1:
        x[minnum],x[-i-1] = x[-i-1],x[minnum]
print(x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值