python-算法-排序-冒泡、选择、插入

版权声明:所有代码均为自己总结,若有雷同请勿模仿 https://blog.csdn.net/weixin_44253023/article/details/90180755

一、冒泡排序

def bubble_sort(li):
	for i in range(0,len(li)-1):
		for j in range(len(li)-i-1):
			if li[j]>li[j+1]:
				li[j],li[j+1]=li[j+1],li[j]
	return li
"""
i代表比较的躺数,j代表每趟比较的次数,每次相邻的两个数进行大小比较,
若前一个数大于后一个数,则进行交换。
这种方法称为:“冒泡排序法”
"""
		

其实冒泡排序是可以优化的
冒泡排序的优化

def bubble_sort(li):
	for i in range(0,len(li)-1):
		exchange=False
		for j in range(len(li)-i-1):
			if li[j]>li[j+1]:
				li[j],li[j+1]=li[j+1],li[j]
				exchange=True
	if not exchange:
		return li

二、选择排序

def select_sort(li):
	for i in range(len(li)-1):
		min_loc=i
		for j in range(i+1,len(li)):
			if li[j]<li[min_loc]:
				li[j],li[min_loc]=li[min_loc],li[j]
	return li
#i是比较进行的躺数,j是比较的次数
#在每趟中取出一个最小(大)值,从而得到一个有序数列

三、插入排序

def insert_sort(li):
	for i in range(1,len(li)):
		j=i-1
		tmp=li[i]
		while j>=0 and li[j]>tmp:
			li[j+1]=li[j]
			j-=1
		li[j+1]=tmp
	return li
#在这可以把插入排序理解为抓牌,每抓一张然后放到它该在的地方
i抓牌次数
j比较次数,放到它应该放的地方

猜你喜欢

转载自blog.csdn.net/weixin_44253023/article/details/90180755