排序算法之选择排序(python实现)

排序算法之选择排序(python实现)

一、选择排序

思想:在待排序的一组数据中,选出最小(最大)的一个数与第一个位置的数交换。
然后在剩下的数中,再找最小(最大)的数与第二个位置的数交换位置。
依次类推直到第 n-1 个元素与第 n 个元素交换位置,选择排序结束。

动图如下:选择排序

二、python实现

代码如下(示例):

items = [10, 4, 5, 1, 3, 9, 7]
def selectionSort(items):
    item = items.copy()		# 浅复制
    number = len(item)
    while number > 0:
        Max = item[0]		# 保存最大的数值
        Maxid = 0			# 记录最大值的索引,方便与最后位的数进行交换
        for i in range(1,number):		# 通过for循环找出最大值,其实python列表结构中自带了最大与最小值的索引,这里还费事的重写一遍的目的还是为了算法思维的训练
            if Max < item[i]:
                Max = item[i]
                Maxid = i
        temp = item[number-1]
        item[number-1] = Max
        item[Maxid] = temp
        number = number - 1
    return item

print('选择排序已完成!',selectionSort(items))		# 选择排序已完成! [1, 3, 4, 5, 7, 9, 10]

print(items)	# [10, 4, 5, 1, 3, 9, 7]

时间复杂度: O(N^2)
空间复杂度: O(1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值