关于插入排序,为什么变量赋值和不赋值结果不同?
题目描述
关于插入排序
题目来源及自己的思路
相关代码
def insert_sort1(ilist):
for i in range(1,len(ilist)):
j=i-1
while j>=0 and ilist[i]<ilist[j]:
ilist[j+1]=ilist[j]
j-=1
ilist[j+1]=ilist[i]
return ilist
print(insert_sort1(list1))
def insert_sort2(ilist):
for i in range(1,len(ilist)):
k=ilist[i]
j=i-1
while j>=0 and k<ilist[j]:
ilist[j+1]=ilist[j]
j-=1
ilist[j+1]=k
return ilist
print(insert_sort2(list1))
你期待的结果是什么?实际看到的错误信息又是什么?
我以为2个程序运行结果一样,实际情况是insert_sort1没有排序成功,为什么insert_sort2,就加了一个k=ilist[i] 就能排序成功,在insert_sort1中直接使用ilist[i]不能吗?请问为什么。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为在
while
循环里,ilist[i]
会被改变(当j=i-1
的时候)。k用来暂存
ilist[i]
原始值,因为在循环里被改变了