选择排序(Python实现)

1. for版本--选择排序

def select_sort_for(a_list):
	'''选择排序 for版本'''
	num = len(a_list)
	for j in range(num-1):
		for i in range(j,num):
			if a_list[i] < a_list[j]:
				a_list[j],a_list[i] = a_list[i],a_list[j]

	return a_list

2. while版本--选择排序

def select_sort_while(b_list):
	'''选择排序 while版本'''
	num = len(b_list)
	j = 0;
	while j < num-1:
		i = j + 1
		while i > j and i <= num-1:
			if b_list[j] > b_list[i]:
				b_list[j],b_list[i] = b_list[i],b_list[j]
			i += 1
		j += 1

	return b_list

3.测试用例

if __name__ == '__main__':
	a_list = [2,4,9,1,5]
	print(select_sort_for(a_list))
	b_list = [2,4,9,1,5]
	print(select_sort_while(b_list))

4. 算法时间复杂度分析

  • 最好时间复杂度:O(n2)
  • 最坏时间复杂度:O(n2)
  • 稳定性:不稳定(考虑升序每次选择最大的情况)
posted @ 2019-01-18 10:20  zkeeper  阅读(170)  评论(0编辑  收藏  举报