插入排序(python实现)

插入排序,和选择排序很像,简单的说就是和选择排序的顺序反一下,也是把列表看作两部分,前面是排好序的,后面是无序的,遍历这个列表,依次把数字往前面有序的那部分放,放进去的时候,再和前面的排序好的数字的最后一位开始比,如果大了,就交换位置,再继续和前面的比,放到合适的位置。如此循环,把每个数字都放到该放的位置上。选择排序就是在后面无序的里面选好最小的,往前面依次放。插入排序就是依次去后面无序的,放到前面的时候,找到自己的位置。
第一种方法

def insert_sort(list):
	n = len(list)
	for i in range(1,n):  # 从第二个元素开始取
		for j in range(i,0,-1):  # 遍历前面的有序的,从有序的最后一个开始比,依次往前比,把后面依次取的数字放到该放的位置上
			if list[j] < llist[j-1]:  # 如果比前面的小,则交换位置
					list[j], list[j-1] = list[j-1], list[j] 

插入排序的最坏时间复杂度为O(n^2),最优的话,我们来看下下面
第二种方法

def insert_sort(list):
	n = len(list)
	for i in range(1,n) :
		while i > 0:
			if list[i]	< list[i-1]:
				list[i], list[i-1] = list[i-1], list[i]
				i -= 1
			else:
				break  # 如果是有序的话,就退出while,这样最好时间复杂度就是O(n)了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值