关于插入排序,为什么变量赋值和不赋值结果不同?

关于插入排序,为什么变量赋值和不赋值结果不同?

题目描述

关于插入排序

题目来源及自己的思路

相关代码

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

回到顶部