python 中选择排序联想

python 中选择排序联想
大家都知道python中的代码编辑相较C语言简单,今天学python时看到了选择排序,代码如下:

def paixu1(x):
    n = len(x)
    for i in range(n):
        minpos = i
        for j in range(i+1,n):
            if x[j] < x[minpos]:
                minpos = j
            x[i],x[minpos] = x[minpos],x[i]
    return x

选择排序的代码是根据C语言中的演变而来的,不过因为python中的赋值其实可以理解为指针指向这个值,交换a,b两个变量的值只是相当于将两个变量所指向的值的箭头互换一下,所以C语言中要交换两个变量需要第三个中间变量的加入:a=t;a=b;b=t,但是python中只需:a,b=b,a即可。
那么道理是一样的,在选择排序中,C语言需要一个指针来指向最小值,即上面的minpos,因为如果直接交换的话,i的值是一直变化的,C中需要i是稳定的,它通过i++来控制稳定循环,但python中不需如此,所以排序代码可写为:

def paixu(x=[]):
    for i in range(len(x)):
        for j in range(i+1,len(x),1):
            if x[j] < x[i]:
                x[i],x[j] = x[j],x[i]
    return x

相比上面那个简洁一点,这个排序是一直在不停地交换值,最终实现排序

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值