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

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

你可能感兴趣的:(python 中选择排序联想)