选择排序

关于选择排序,其算法的核心思想是:

固定位置,选择元素,即:先从序列中,找到最小的元素,放在第一个位置,之后找到第二小的元素,放在第二个元素,以此类推,就可以完成整个排序工作了。

核心代码如下:

def selectSort(listx):

xLen = len(listx)

for i in range(xLen):

    min = i

    #遍历完成之后,min就指向了最小元素的下标

    for j in range(i+1, xLen):

        if listx[min] > listx[j]:

            min = j

    #把最小的元素放到前面去。

    temp = listx[min]

    listx[min] = listx[i]

    listx[i] = temp

return listx

if name ==‘main’:

#选择排序演示

print(selectSort([878,43,2,4333,4]))

执行结果:

[2, 4, 43, 878, 4333]

时间复杂度计算:

当我们遍历第一遍时,比较了n-1次,把最小的放在了第一个位置;

遍历第二遍时,比较了n-2次,把第二小的放在了第二个位置;

遍历第n-1遍时,比较了1次,把第二大的放在了倒数第二个位置。

这样,我们总共比较的次数是1+2+3+…+(n-1)= n(n-1)/2

在计算时间复杂度时,我们一般使用的大表示法,其时间复杂度,从小到大的排序是:

(1)<(logn)<(n)<(nlogn)<(n2)<…<(2n)<(n!)

我们上面所求得的n(n-1)/2,其时间复杂度,最大的影响因子是n2/2,故其时间复杂度是(n2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值