数据结构之直接插入排序

直接插入排序

核心思想:有且只有一个元素的序列总是有序的!
类比:此种排序法可类比打牌时的抓牌阶段(同一花色A-K)
1、第一张(如红心5)不用想该怎么放,拿在手里就行了
2、第二张(如红心3),发现其比第一张(红心5)小,那就放在左边
3、第三张(如红心7),发现其比5大,也比3大,则暂时放在最右边
4、第四张(如红心4),其比7小,比5小,比3大,则放在5与3之间
5、。。。。。。直到A-K依次排序
注:比较的顺序为抓取的牌与已拍好序的牌进行比较,且从后(较大的牌)往前比较,发现抓取的牌比排好序的某张牌大就不用再比较了,反之则继续往前比较,直到找到属于自己的位置。
Python3的实现代码(直接拷贝到PyCharm运行即可):

#以一副单色纸牌为例
cards=[6,3,5,8,9,1,12,2,13,10,11,7,4]
#由于抓取第一张时不需要排序(总是有序),故从1号索引元素开始
#第一层排序保证所有的纸牌都能被抓取
for x in range(1,len(cards)):
	#第二层排序的含义:抓取到的纸牌与已在手里排好序的纸牌倒序比较
	for i in range(x-1,-1,-1):
		#cars[i]-手里的一张牌(正在与其比较)
		#cars[i+1]-抓到的牌
		if cards[i]>cards[i+1]:
			temp=cards[i]
			cards[i]=cards[i+1]
			cards[i+1]=temp
print(cards)		
#运行结果:
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]	

简单的东西也要手动把代码敲出来才能更好的理解~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值