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

发布于 2022-09-12 01:11:59 字数 747 浏览 8 评论 0

题目描述

关于插入排序

题目来源及自己的思路

相关代码

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌酱 2022-09-19 01:11:59

因为在 while 循环里,ilist[i] 会被改变(当 j=i-1 的时候)。

忘羡 2022-09-19 01:11:59

k用来暂存ilist[i]原始值,因为在循环里被改变了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文