python 排序算法——选择排序

本文介绍了选择排序算法,其特点是每轮比较只交换一次元素,对比冒泡排序更节省CPU资源。选择排序在数据量小时有优势,但总体时间复杂度仍为O(n^2),属于不稳定的排序方式。适用于小规模数据排序场景。
# 数据结构与算法
# 排序算法 -- 选择排序

#选择排序和冒泡排序很类似,但是选择排序每轮比较只会有一次交换,
#而冒泡排序会有多次交换,交换次数比冒泡排序少,就减少cpu的消耗,
#所以在数据量小的时候可以用选择排序,实际适用的场合少。

#比较性:因为排序时元素之间需要比较,所以是比较排序

#稳定性:因为存在任意位置的两个元素交换,比如[5,  8, 5, 2],
#第一个5会和2交换位
#置,所以改变了两个5原来的相对顺序,所以为不稳定排序。

#时间复杂度:我们看到选择排序同样是双层循环n*(n-1)),所以时间
#复杂度也为:O(n^2)

#空间复杂度:只需要常数个辅助单元,所以空间复杂度也为O(1)

#记忆方法:选择对象要先选最小的,因为嫩,哈哈

def select_sort(alist):
#	第一层表示循环选择的遍数
	for i in range(0,len(alist)-1):
#		temp 表示待交换的元素
		temp = i
#		第二次表示最小元素与后面元素逐个比较
		for j in range(i+1,len(alist)):
#			判断每个点与头点的大小,
			if alist[j] < alist[temp]:
#				若较小则保存于 min 中
				temp = j
		alist[temp], alist[i] = alist[i], alist[temp]
		
				
lis = [3,2,5,7,2,8,8,3,44,75,3]
select_sort(lis)
print(lis)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江某指点迷津

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值