首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"j-= 1“在这个插入排序算法中做什么?

"j-= 1“在这个插入排序算法中做什么?
EN

Stack Overflow用户
提问于 2016-07-26 06:57:15
回答 2查看 722关注 0票数 0

我从教程中学习了如何在python3中实现插入排序算法,但是我似乎不明白为什么在这段代码中它是"j -= 1“而不是j += 1。

代码语言:javascript
复制
sample1 = [5,3,2,4,6]

def insertion_sort(sample):
    print("initial sample: ",sample)

    for i in range(1,len(sample)):
        j = i
        while(j!=0 and sample[j] < sample[j-1]):
            sample[j-1],sample[j] = sample[j],sample[j-1]
            j -= 1   #why this and not j += 1 instead?
    print("sorted sample: ",sample)

insertion_sort(sample1)

EN

回答 2

Stack Overflow用户

发布于 2016-07-26 07:05:47

因为j从i的值开始,一直到0。

如果你想要将j增加1 -as -你的j永远不会达到0,所以你的while循环中的j!=0将一直为真,这意味着无限循环。

票数 0
EN

Stack Overflow用户

发布于 2016-07-26 07:08:55

插入排序示例:

如你所见,插入排序从第二个元素开始,与选择排序不同。所以你从继续增加i和减少j开始,从位置i0。因此,在i的th排列中,您将找到的最低元素放在第一位,并创建一个大小为i的排序数组

代码语言:javascript
复制
def insertion_sort(sample):
    print("initial sample: ",sample)

    for i in range(1,len(sample)):
        j = i #start from i and run till 0.
        while(j!=0 and sample[j] < sample[j-1]):
            sample[j-1],sample[j] = sample[j],sample[j-1] #swapping if element j-1 > element j to get lowest element on 1st place.
            j -= 1   #from element i to element 0
    print("sorted sample: ",sample)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38578629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档