python 排序算法——选择排序

# 数据结构与算法
# 排序算法 -- 选择排序

#选择排序和冒泡排序很类似,但是选择排序每轮比较只会有一次交换,
#而冒泡排序会有多次交换,交换次数比冒泡排序少,就减少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)

你可能感兴趣的:(python,排序算法)