关于插入排序,为什么变量赋值和不赋值结果不同?
题目描述
关于插入排序
题目来源及自己的思路
相关代码
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]不能吗?请问为什么。
回答:
因为在 while
循环里,ilist[i]
会被改变(当 j=i-1
的时候)。
回答:
k用来暂存ilist[i]
原始值,因为在循环里被改变了
以上是 关于插入排序,为什么变量赋值和不赋值结果不同? 的全部内容, 来源链接: utcz.com/a/158808.html