python篇 插入排序

1.思路整理

在这里插入图片描述
所谓插入排序,就是简单的取出一个值然后和放在数组或列表中合适的位置(在前面元素中比较并找到位置),当然由于顺序表的特性,插入和修改数据往往要同时调动其他元素,个人倾向于使用链表,但这里仍使用列表实现。

2.举例说明:

值:2 5 1 4 8
标:0 1 2 3 4


第1轮.为了方便移位操作从下标1开始取,取出下标1的值:5,用其之前的元素与之对比操作

当前操作对象为下标1

下标0与取出值5对比 2<5 下标0不进行操作
此次执行后列表值为:

值:2 5 1 4 8
标:0 1 2 3 4

将取出值5赋予当前操作下标,即下标1赋值为5,此次执行后列表值为:

值:2 5 1 4 8
标:0 1 2 3 4

本轮循环结束,交换后的值为:

值:2 5 1 4 8

标:0 1 2 3 4


第2轮.指针后移,取出下标2的值:1

下标1与取出值1对比 5>1 下标1后移,即下标2赋值下标1
此次执行后列表值为:

值:2 5 5 4 8
标:0 1 2 3 4

指针前移,当前操作对象为下标1

下标0与取出值1对比 2>1 下标0后移,即下标1赋值下标0
此次执行后列表值为:

值:2 2 5 4 8
标:0 1 2 3 4

指针前移,当前操作对象为下标0

由于下标0前方已无元素,将取出值1赋予当前操作下标,即下标0赋值为1,此次执行后列表值为:

值:1 2 5 4 8
标:0 1 2 3 4

本轮循环结束,交换后的值为:

值:1 2 5 4 8

标:0 1 2 3 4


第3轮.指针后移,取出下标3的值:4

下标2与取出值4对比 5>4 下标1后移,即下标3赋值下标2
此次执行后列表值为:

值:1 2 5 5 8
标:0 1 2 3 4

指针前移,当前操作对象为下标2

下标1与取出值4对比 2<4 下标0不进行任何操作
此次执行后列表值为:

值:1 2 5 5 8
标:0 1 2 3 4

将取出值4赋予当前操作下标,即下标2赋值为4,此次执行后列表值为:

值:1 2 4 5 8
标:0 1 2 3 4

本轮循环结束,交换后的值为:

值:1 2 4 5 8

标:0 1 2 3 4


第4轮.指针后移,取出下标4的值:8

下标3与取出值8对比 5<8 下标1 不进行任何操作
此次执行后列表值为:

值:1 2 4 5 8
标:0 1 2 3 4

将取出值4赋予当前操作下标,即下标4赋值为8,此次执行后列表值为:

值:1 2 4 5 8
标:0 1 2 3 4

本轮循环结束,交换后的值为:

值:1 2 4 5 8

标:0 1 2 3 4

循环结束


3.代码实现

#插入排序
#一个列表
t=[4,2,1,3,7,5,6,8,9,10]
#依次遍历要取出的数
for i in range(1,len(t)):
#将取出的数存储于变量k
	k=t[i]
	j=i
#用当前操作下标与之前的元素进行对比
	while t[j-1]>k and j>=1:
#前移
		t[j]=t[j-1]
		j-=1
	t[j]=k

print(t)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值